这个bellman-ford算法哪错了,连样例都过不去
查看原帖
这个bellman-ford算法哪错了,连样例都过不去
1173500
JINHUUI楼主2024/7/31 11:30
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int M = 1e5 + 10, N = 1e4 + 10;

int n, m, k;
int s, t;
int dist[N], g[N][N];
int backup[N];
bool st[M];

void dfs(int u){
	
	st[u] = true;
	for(int i = 1;i <= n;i++){
		dist[i] = min(dist[i], backup[u] + g[u][i]);
		if(!st[i])    dfs(i);
	}
	
	return ;
}

int bellman_ford(){

	memset(dist, 0x3f, sizeof dist);	
	dist[s] = 0;
	
	for(int i = 0; i < k; i ++){
	
		memcpy(backup, dist, sizeof dist);
		memset(st, false, sizeof st);
		dfs(1);
	
	}
	
	return dist[t];
	
}

int main(){
	cin >> n >> m >> k;
	cin >> s >> t;
	int x, y, z;
	for(int i = 0;i < m;i++){
		scanf("%d %d %d", &x, &y, &z);
		g[x][y] = min(g[x][y], z);
		g[y][x] = min(g[y][x], z);
	}
	
	int t = bellman_ford();
	
	cout << abs(t) << endl;
	
	return 0;
}
2024/7/31 11:30
加载中...