菜鸡朴素floyd10分求调(可过样例)
查看原帖
菜鸡朴素floyd10分求调(可过样例)
525056
I_love_LPN_Forever楼主2022/1/12 13:36
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define sf scanf
#define pf printf
#define maxn 7005
using namespace std;
int n, m, s, u, v, w;
long long dis[maxn][maxn];
int main() {
	sf("%d %d %d", &n, &m, &s);
	for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            dis[i][j] = 2147483647;
        }
    }
	for (int i = 1; i <= m; i++) {
		sf("%d %d %d", &u, &v, &w);
		dis[u][v] = w;
	}
	for (int k = 1; k <= n; k++) {
		for (int i = 1; i <= n; i++) {
			if (i == k || dis[i][k] == 2147483647) {
                continue;
			}
			for (int j = 1; j <= n; j++) {
				dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
			}
		}
	}
	dis[s][s] = 0;
	for (int i = 1; i <= n; i++) {
		pf("%d ", dis[s][i]);
	}
	puts(" ");
	return 0;
}
2022/1/12 13:36
加载中...