社区讨论

蒻芨求助!为什么Bellman_ford全RE了?

P4779【模板】单源最短路径(标准版)参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo2xqtm4
此快照首次捕获于
2023/10/23 21:30
2 年前
此快照最后确认于
2023/10/23 21:30
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int M=1e4+10,N=1e4+10;
int n,m,s;
long long dis[N],u[M],v[M],w[M],cnt=1;
long long Bellman_ford(int s,int t) {
	memset(dis,0x3f,sizeof(dis));
	dis[s]=0;
	for(int i=1; i<=n-1; i++) {
		int check=0;
		for(int j=1; j<=cnt; j++) {
			if(dis[u[j]]+w[j]<dis[v[j]]) {
				dis[v[j]]=dis[u[j]]+w[j];
				check=1;
			}
		}
		if(check==0) {
			break;
		}
	}
	return dis[t];
}
int main() {
	scanf("%d%d%d",&n,&m,&s);
	for(int i=1; i<=m; i++) {
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		u[cnt]=x,v[cnt]=y,w[cnt]=z;
		cnt++;
		u[cnt]=y,v[cnt]=x,w[cnt]=z;
		cnt++;
	}
	for(int i=1;i<=n;i++){
		cout<<Bellman_ford(s,i)<<" ";
	}
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...