zoukankan      html  css  js  c++  java
  • dj

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #define P pair<int,int>
    #define mp(a,b) make_pair(a,b)
    using namespace std;
    const int maxn=500100;
    int first[maxn],to[maxn],next[maxn],cnt,val[maxn];
    inline int read()
    {
        int x=0,f=1;
        char ch=getchar();
        while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
        while(isdigit(ch)){x=10*x+ch-'0';ch=getchar();}
        return x*f;
    }
    void add(int u,int v,int w)
    {
        to[++cnt]=v;
        next[cnt]=first[u];
        first[u]=cnt;
        val[cnt]=w;
    }
    int n,m,S;
    int dis[maxn];
    void dijkstra(int s)
    {
        priority_queue<P,vector<P>,greater<P> > q;
        for(int i=1;i<=n;i++)dis[i]=2147483647;
        q.push(mp(0,s));
        dis[s]=0;
        while(!q.empty())
        {
            int now=q.top().second;
            q.pop();
            for(int i=first[now];i;i=next[i])
            {
                if(dis[to[i]]>dis[now]+val[i])
                {
                    dis[to[i]]=dis[now]+val[i];
                    q.push(mp(dis[to[i]],to[i]));
                }
            }
        }
    }
    int main()
    {
        n=read(),m=read(),S=read();
        for(int i=1;i<=m;i++)
        {
            int u,v,w;
            u=read(),v=read(),w=read();
            add(u,v,w);
        }
        dijkstra(S);
        for(int i=1;i<=n;i++)printf("%d ",dis[i]);
    }
  • 相关阅读:
    Stupid Tower Defense
    Lifting the Stone
    城市地平线
    BestCoder Sequence
    Miaomiao's Geometry
    Rating
    Turn the pokers
    Peter's Hobby
    HTTP关键词收集
    HTTP出现前的协议
  • 原文地址:https://www.cnblogs.com/Kong-Ruo/p/7756423.html
Copyright © 2011-2022 走看看