#include <stdio.h> #define INF 0x3f3f3f3f // 定义一个无穷大的数

int n, m; // n为人的个数,m为认识关系的个数 int map[1010][1010]; // 存储认识关系以及传递时间的矩阵

void floyd() { int i, j, k; for (k = 0; k < n; k++) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (map[i][j] > map[i][k] + map[k][j]) { map[i][j] = map[i][k] + map[k][j]; } } } } }

int main() { scanf("%d %d", &n, &m);

int i, j, k;
for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        if (i == j) {
            map[i][j] = 0; // 自己到自己的时间为0
        } else {
            map[i][j] = INF; // 其他的时间先设为无穷大
        }
    }
}

int a, b, c;
for (i = 0; i < m; i++) {
    scanf("%d %d %d", &a, &b, &c);
    map[a][b] = map[b][a] = c; // 注意是无向图
}

floyd(); // 求所有人之间传递消息的最短时间

int max = INF, min = -1;
for (i = 0; i < n; i++) {
    max = -1;
    for (j = 0; j < n; j++) {
        if (map[i][j] > max) {
            max = map[i][j];
        }
    }
    if (max < min || min == -1) {
        min = max;
        k = i;
    }
}

printf("%d\n", k);

return 0;

原文地址: https://www.cveoy.top/t/topic/fpfN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录