@[CONILLION](/space/show?uid=43796)
SPFA是队列啊 , 您这是栈啊
by Hono @ 2018-07-19 11:47:59
@[spfa](/space/show?uid=17850)
by qianfujia @ 2018-07-19 12:07:46
@[保登心爱](/space/show?uid=27115) 是手写队列没错啊
by 八声甘州 @ 2018-07-19 14:14:59
@[保登心爱](/space/show?uid=27115) 哦对对对对谢谢谢谢
by 八声甘州 @ 2018-07-19 14:16:13
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
struct Edge{
long long n,t,w;
}edge[200001];
long long n,m,s,i,j,f,t,w,cnt,k,r,l;
long long que[15001],d[5001],head[5001],visit[5001];
int main()
{
//freopen("spfa.in","r",stdin);
//freopen("spfa.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for (i=0;i<=n;i++)
{
head[i]=-1;
d[i]=2147483647;
}
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&f,&t,&w);
edge[i].t=t;
edge[i].w=w;
edge[i].n=head[f];
head[f]=i;
//printf("%d\n",edge[i].w);
}
que[1]=s;l=0;r=1;d[s]=0;
while (l<=r)
{
cnt=que[++l];
//printf("%d %d\n",l,cnt);
visit[cnt]=false;
k=head[cnt];
while (k!=-1)
{
if (edge[k].w+d[cnt]<d[edge[k].t])
{
d[edge[k].t]=edge[k].w+d[cnt];
//printf("%d %d",edge[k].t,edge[k].w);
if (!visit[edge[k].t])
{
r++;
que[r]=edge[k].t;
visit[edge[k].t]=true;
//printf("%d ",que[r]);
}
//printf("%d ",k);
}
k=edge[k].n;
}
//printf("%d ",r);
}
for (i=1;i<=n;i++) printf("%d ",d[i]);
return 0;
}
```
by 八声甘州 @ 2018-07-19 14:44:18
RE70…………
by 八声甘州 @ 2018-07-19 14:44:48
过了过了
by 八声甘州 @ 2018-07-19 14:58:16