Dijkstra算法0分?
查看原帖
Dijkstra算法0分?
288506
OutsideR_楼主2021/3/21 18:12

why??

测试数据都对的

#include <bits/stdc++.h>
using namespace std;
const long long Maxx=2147483647;
long long n,m,f,dis[10005],k,minn;
long long w[10005][10005];
bool mark[10005];
int main(){
	cin>>n>>m>>f;
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			w[i][j]=Maxx;
		}
		w[i][i]=0;
	}
	for(int i=1;i<=m;i++){
		int v1,v2,ww;
		cin>>v1>>v2>>ww;
		w[v1][v2]=ww; 
		
	}
	for(int i = 1;i<=n;i++)dis[i]=Maxx;
	dis[f]=0;

	for(int i = 1;i<=n;i++){
		minn = Maxx;
		k=0;
		for(int j = 1;j<=n;j++){
			if(dis[j]<minn && !mark[j]){
				minn=dis[j];
				k=j;
			} 
		}
		mark[k]=1;
		for(int j = 1;j<=n;j++){ 
			dis[j]=min(dis[k]+w[k][j],dis[j]);
		}
	}
	for(int j =1;j<=n;j++)cout<<dis[j]<<' '; 
	return 0;
} 
2021/3/21 18:12
加载中...