求助,最近学的最短路,自己编了一下,爆0
查看原帖
求助,最近学的最短路,自己编了一下,爆0
352621
孤城疲惫了吖楼主2021/8/15 18:16

蒟蒻用的dijkstra朴素算法,自己编出来样例过了贼鸡儿高兴,结果神奇的爆0。如果有哪些很弱智的错误,神犇们骂轻点

#include<bits/stdc++.h>
using namespace std;
int mapp[5001][5001],dis[5001],f[5001],n,m,s,x,y,z;
int main(){
	cin>>n>>m>>s;
	memset(mapp,1,sizeof mapp);
	for(int i=1;i<=m;i++){
		cin>>x>>y>>z;
		mapp[x][y]=z;
	}
	memset(dis,1,sizeof dis);
	dis[s]=0;
	for(int i=1;i<=n;i++){
		int minn=1e9,id;
		for(int j=1;j<=n;j++)	
			if(minn>dis[j]&&!f[j]){
				minn=dis[j];
				id=j;
			}
		f[id]=1;
		for(int j=1;j<=n;j++)
			if(!f[j]&&mapp[id][j]+dis[id]<dis[j])
				dis[j]=mapp[id][j]+dis[id];
	}
	for(int i=1;i<=n;i++)
		if(dis[i]>5000000)
			cout<<-1;
		else
			cout<<dis[i]<<' ';
	return 0;
}
2021/8/15 18:16
加载中...