信使
思路:信使从1号点到其它点的最大距离就是送信时间,数据范围较小直接Floyd
具体代码如下
#include<iostream>
#include<cstring>
using namespace std;
const int N = 210;
int n, m;
int d[N][N];
int main(){
memset(d, 0x3f, sizeof d);
scanf("%d%d", &n, &m);
for(int i=0; i<m; ++i){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
d[a][b] = d[b][a] = min(d[a][b], c);
}
for(int k=1; k<=n; ++k)
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
int res = 0;
for(int i=2; i<=n; ++i)
if(d[1][i] == 0x3f3f3f3f){
res = -1;
break;
}else res = max(res, d[1][i]);
printf("%d\n", res);
return 0;
}