求助!刚学最短路,第2、9、10个点RE了
查看原帖
求助!刚学最短路,第2、9、10个点RE了
93538
αnonymous楼主2024/4/28 11:13
#include <iostream>
using namespace std;

struct point {
	int if_perm = 0;
	long long length = 2147483647;
};
int n, m, s;
long long road[1010][1010] = { 0 };
int working;
point list[1010];
void func() {
	for (int i = 1; i <= n; i++) {
		if(road[working][i]!=0)
			if (list[working].length + road[working][i] < list[i].length) {
				list[i].length = list[working].length + road[working][i];
			}
	}
	long long Min = 2147483647;
	int k = 0;
	for (int i = 1; i <= n; i++) {
		if (list[i].if_perm == 0)
			if (list[i].length < Min) {
				k = i;
				Min = list[i].length;
			}
	}
	if (k == 0) {
		return;
	}
	list[k].if_perm = 1;
	working = k;
	func();
	
}
int main()
{
	cin >> n >> m >> s;
	int x, y, temp;
	for (int i = 1; i <= m; i++) {
		cin >> x >> y >> temp;
		if (road[x][y] == 0||road[x][y]>temp)
			road[x][y] = temp;
	}	
	working = s;
	list[s].length = 0;
	list[s].if_perm = 1;
	func();	
    for(int i = 1; i <= n; i++)
        cout << list[i].length << " ";
}

为什么邻接矩阵不能过呢

2024/4/28 11:13
加载中...