zoukankan      html  css  js  c++  java
  • diji

    #include <bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    struct Edge
    {
        int v,w,next;
    } edge[maxn];
    int head[maxn];
    int cnt;
    int n,m;
    void addedge(int u,int v,int w)
    {
        edge[cnt].v=v;
        edge[cnt].w=w;
        edge[cnt].next=head[u];
        head[u]=cnt++;
    }
    bool vis[maxn];
    int dist[maxn];
    void Dijkstra(int s)
    {
        priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
        memset(dist,-1,sizeof(dist));
        dist[s]=0;
        q.push(make_pair(0,s));
        while(!q.empty())
        {
            int u=q.top().second;
            q.pop();
            if(vis[u]==true) continue;
            vis[u]=true;
            for(int i=head[u]; i!=-1; i=edge[i].next)
            {
                int v=edge[i].v;
                int w=edge[i].w;
                if((dist[v]>dist[u]+w||dist[v]==-1)&&!vis[v])
                {
                    dist[v]=dist[u]+w;
                    q.push(make_pair(dist[v],v));
                }
            }
        }
    }
    int main()
    {
        int st,en;
        scanf("%d%d%d%d",&n,&m,&st,&en);
        memset(head,-1,sizeof(head));
        for(int i=1; i<=m; i++)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            addedge(x,y,z);
            addedge(y,x,z);
        }
       Dijkstra(st);
        printf("%d
    ",dist[en]);
        return 0;
    }
    

      

  • 相关阅读:
    Centos7 JDK8安装配置
    select2
    docker 删除多个退出的容器
    redis 批量删除多个key
    Dockerfile 文件命令
    Docker部署go示例
    php 导入 excel 文件
    rabbitmq安装
    rabbitmq之php客户端使用实例
    k8s
  • 原文地址:https://www.cnblogs.com/xiaolaji/p/9746821.html
Copyright © 2011-2022 走看看