社区讨论
求调单源最短路
P3371【模板】单源最短路径(弱化版)参与者 4已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @loc7exbn
- 此快照首次捕获于
- 2023/10/30 09:11 2 年前
- 此快照最后确认于
- 2023/11/04 18:32 2 年前
CPP
#include<iostream>
#include<cstdio>
using namespace std;
int e[1005][1005];
int n,m,s;
int t1,t2,t3;
int book[1005];
int dis[1005];
const int wu=1e9+7;
int u;
int main(){
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) e[i][j]=0;
else e[i][j]=wu;
for(int i=1;i<=m;i++){
cin>>t1>>t2>>t3;
e[t1][t2]=t3;
}
for(int i=1;i<=n;i++){
dis[i]=e[s][i];
if(e[s][i]==0)
dis[i]=wu;
}
for(int i=1;i<=n;i++)
book[i]=0;
book[s]=1;
for(int i=1;i<=n-1;i++){
int minn=wu;
for(int j=1;j<=n;j++){
if(book[j]==0 && dis[j]<minn){
minn=dis[j];
u=j;
}
}
book[u]=1;
for(int v=1;v<=n;v++){
if(e[u][v]<wu)
if(dis[u]+e[u][v]<dis[v])
dis[v]=dis[u]+e[u][v];
}
}
for(int i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}
/*
5 15 5
2 5 181
1 5 98
4 2 49
3 2 262
4 3 26
2 4 192
5 1 221
2 2 254
4 4 233
1 5 44
5 4 67
4 2 214
1 1 47
1 1 118
5 4 3
*/
找了很长时间的错误但还是不对,有没有大佬给我看看啊?
回复
共 9 条回复,欢迎继续交流。
正在加载回复...