Dijkstra,3个tle死循环
查看原帖
Dijkstra,3个tle死循环
170410
向晚楼主2021/4/21 20:09

下载过数据以证实好像是死循环
没有优化,我同学过了,我没过
救救孩纸

#include<iostream>
using namespace std;
int n,m,s,head[10005],next[100005],dx[100005],qz[100005];
int a,b,c,tot;
long long ans[10005];
bool flag[10005];
void add(int x,int y,int z){
	tot++;
	next[tot]=head[x];
	dx[tot]=y;
	qz[tot]=z;
	head[x]=tot;
}
void dijkstra(){
	ans[s]=0;
	while(1){
		int now=-1;
		for(int i=1;i<=n;i++)
			if(!flag[i]&&(now==-1||ans[i]<ans[now]))
				now=i;
		if(now==-1) break;
		flag[now]=1;
		for(int i=head[now];i;i=next[i])
			ans[dx[i]]=min(ans[dx[i]],ans[now]+qz[i]);
	}
}
int main(){
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++) ans[i]=2147483647;
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c;
		add(a,b,c);
	}
	dijkstra();
	for(int i=1;i<=n;i++) cout<<ans[i]<<' ';
	return 0;
}
2021/4/21 20:09
加载中...