求调单源最短路
查看原帖
求调单源最短路
241817
Chancylaser楼主2021/7/6 16:28
#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
*/

找了很长时间的错误但还是不对,有没有大佬给我看看啊?

2021/7/6 16:28
加载中...