AFOer求助
查看原帖
AFOer求助
335094
Lucifero楼主2021/6/29 20:28

rt,还要被inf折磨……

inf=0x3f3f3f3f WA90

inf=2147483647 WA0 且除了s全输出-1

#include <bits/stdc++.h>
#define int long long
#define I inline
#define inf 2147483647
using namespace std;
class Edge
{
public:
    int u,v,w,next;
}e[500001];
queue<int> talk;
bool inq[10001];
int elast[10001],dis[10001],n,link;
I void add(int u,int v,int w)
{
    e[++link]=(Edge){u,v,w,elast[u]};
    elast[u]=link;
}
I void spfa(int u)
{
    int v,i;
    memset(dis,inf,sizeof(dis));
    dis[u]=0;
    talk.push(u),inq[u]=true;
    while(!talk.empty())
    {
        u=talk.front();
        talk.pop(),inq[u]=false;
        for(i=elast[u];i!=0;i=e[i].next)
        {
            v=e[i].v;
            if (dis[v]>dis[u]+e[i].w)
            {
                dis[v]=dis[u]+e[i].w;
                if (!inq[v])
                    talk.push(v),inq[v]=true;
            }
        }
    }
}
signed main()
{
    int m,s,u,v,w,i,j;
    scanf("%lld%lld%lld",&n,&m,&s);
    while(m--)
    {
        scanf("%lld%lld%lld",&u,&v,&w);
        add(u,v,w);
    }
    spfa(s);
    for(i=1;i<=n;i++) printf("%lld ",dis[i]);
}
2021/6/29 20:28
加载中...