- 
              
讨论 (0)
这个用户还没有发布过讨论 - 
              
贡献 (0)
啊哦,这个用户还没贡献过题目和题解~ - 
              
递交 (2)
最近递交
状态 题目 递交者 时间 内存 语言 递交时间 P2029 时间复杂度 不退 18ms 320.0 KiB C++ 2018-11-01 23:19:54 抓住那头牛 不退 23ms 2.367 MiB C++ 2018-10-02 16:15:13 抓住那头牛 不退 21ms 384.0 KiB C++ 2018-10-02 16:14:57 P1179 邮票面值设计 不退 122ms 384.0 KiB C++ 2018-09-23 21:15:53 P1179 邮票面值设计 不退 149ms 384.0 KiB C++ 2018-09-23 21:13:48 lxy 搭积木 不退 46ms 384.0 KiB C++ 2018-08-15 20:36:54 4399小游戏之 十字架 不退 48ms 384.0 KiB C++ 2018-08-15 20:23:51 P1926 紫色的手链 不退 301ms 484.0 KiB C++ 2018-06-20 20:26:45 P1926 紫色的手链 不退 228ms 472.0 KiB C++ 2018-06-20 20:26:33 P1926 紫色的手链 不退 355ms 512.0 KiB C++ 2018-06-20 20:15:37  
个人简介
#include<iostream>
using namespace std;
const int INF=0x3f3f3f3f;
int n,m,s,u,v,w,cnt;
int queue[100005],head[10005],dis[10005];
bool vis[10005];
struct edge{
    int to;
    int next;
    int val;
}a[500005];
void add(int u,int v,int w)
{
    a[++cnt].to=v;
    a[cnt].val=w;
    a[cnt].next=head[u];
    head[u]=cnt;
}
void spfa()
{
    int u,l=0,r=1;
    queue[1]=s;
    vis[s]=1;
    dis[s]=0;
    while(l<r)
    {
        u=queue[++l];
        vis[u]=0;
        for(int i=head[u];i;i=a[i].next)
        {
            if(dis[u]+a[i].val<dis[a[i].to])
            {
                dis[a[i].to]=dis[u]+a[i].val;
                if(vis[a[i].to]==0)
                {
                    vis[a[i].to]=1;
                    queue[++r]=a[i].to;
                }
            }
        }
    }
}
int main()
{
    cin>>n>>m>>s;
    for(int i=1;i<=n;++i)
        dis[i]=INF;
    dis[s]=0; 
    for(int i=1;i<=m;++i)
    {
        cin>>u>>v>>w;
        add(u,v,w);
    }
    spfa();
    for(int i=1;i<=n;++i)
    {
        if(dis[i]==INF)
            cout<<2147483647<<" ";
        else
            cout<<dis[i]<<" ";
    }
    return 0; 
}