蒟蒻求助最短路

灌水区

```cpp #include<bits/stdc++.h> using namespace std; int dd[1005][1005],s,e,n,m; //不知道这里会不会re,而且floyd跑不了这么多 int main() { scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) dd[i][j]=47483647; //1.初值赋大了 to 4. } for(int i=1,u,v,d;i<=m;i++) { scanf("%d%d%d",&u,&v,&d); dd[u][v]=dd[v][u]=min(dd[u][v],d); //2.要建双向边 } dd[s][s]=0; //3.这里赋初值,后面赋的话没有用 for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { if(i==k) continue; for(int j=1;j<=n;j++) { dd[i][j]=dd[j][i]=min(dd[i][j],dd[i][k]+dd[k][j]); //4.这里相加会爆int //这里也是双向边 } } } for(int i=1;i<=n;i++) { printf("%d ",dd[s][i]); } return 0; } ```
by Horizon·Sun @ 2019-09-19 23:06:57


还有这位老哥,这题不应该是spfa板子吗
by Horizon·Sun @ 2019-09-19 23:07:41


忘了,还有输出时按我写的需要特判一下
by Horizon·Sun @ 2019-09-19 23:13:24


|