求指导,为什么我这个就只过了一个
查看原帖
求指导,为什么我这个就只过了一个
731994
LikeMiracle楼主2024/3/2 21:58
#include<bits/stdc++.h>
using namespace std;
#define N 10010
const long int inf=pow(2,31)-1;
long int g[N][N];
long int dis[N]; 
long int flag[N];
int main(){
	long int n,m,s;
	long int x,y,w;
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++) dis[i]=inf;
	for(int i=1;i<=m;i++){
		cin>>x>>y>>w;
		g[x][y]=w;
	}
	dis[s] =0;
	for(int i=1;i<=n;i++){
		long int minn=inf,t;
		for(int j=1;j<=n;j++){
			 if(dis[j]<minn&&flag[j]==0){
			 	minn=dis[j];t=j;
			 }
		}
		flag[t]=1;
		for(int j=1;j<=n;j++){
			if(g[t][j]>0){
				dis[j]=min(minn+g[t][j],dis[j]);
			}
		}
	}
	for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
	return 0;
} 
2024/3/2 21:58
加载中...