• 最短路模板(前向星)


    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    const int maxn=100005;
    const int inf=999999;
    using namespace std;
    struct Edge
    {
        int next;
        int to;
        int w;
    }edge[maxn];
    struct node
    {
        int num;
        int dist;
        node(int _num=0,int _dist=0):num(_num),dist(_dist){}
        friend bool operator<(node a,node b)
        {
            return a.dist>b.dist;
        }
    };
    int head[maxn];
    int s[maxn];
    int n,m,cnt;
    int dis[maxn];
    bool vis[maxn];
    void add(int u,int v,int w)
    {
        edge[cnt].next=head[u];
        edge[cnt].to=v;
        edge[cnt].w=w;
        head[u]=cnt++;
    }
    void dij(int x)
    {
        priority_queue<node>que;
        memset(dis,0x3f,sizeof(dis));
        memset(vis,0,sizeof(vis));
        dis[x]=0;
        que.push(node(x,0));
        while(!que.empty())
        {
            node p=que.top();
            que.pop();
            int now=p.num;
            for(int i=head[now];i!=-1;i=edge[i].next)
            {
                Edge e=edge[i];
                if(dis[e.to]>dis[now]+e.w)
                {
                    dis[e.to]=dis[now]+e.w;
                    que.push(node(e.to,dis[e.to]));
                }
            }
        }
    }
    int main()
    {
        int x,y,w;
        while(cin>>n>>m)
        {
            cnt=0;
            memset(head,-1,sizeof(head));
            for(int i=1;i<=m;i++)
            {
                cin>>x>>y>>w;
                add(x,y,w);
            }
            dij(1);
            cout<<dis[9]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    原生js 实现 map
    前端安全学习
    前端性能优化
    前端的跨域请求方法使用场景及各自的局限性
    7-7 12-24小时制(15 分)
    7-4 BCD解密(10 分)
    7-2 然后是几点(15 分)
    厘米换算英尺英寸
    鸡兔同笼
    数组:经典计数
  • 原文地址:https://www.cnblogs.com/huangdao/p/10446761.html
Copyright © 2020-2023  润新知