标签:
http://poj.org/problem?id=1502
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 6331 | Accepted: 3927 |
Description
Input
Output
Sample Input
5 50 30 5 100 20 50 10 x x 10
Sample Output
35
题目大意:
给你 1到n , n个计算机进行数据传输, 问从1为起点传输到所有点的最短时间是多少, 其实就是算 1 到所有点的时间中最长的那个点。
然后是数据
给你一个n 代表有n个点, 然后给你一个邻接矩阵, 只有一半,另一半自己补
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #define INF 0x3f3f3f3f #define max(a, b)(a > b ? a : b) #define N 110 int G[N][N], n; void Init() { int i, j; for(i = 1 ; i <= n ; i++) { for(j = 1 ; j <= n ; j++) { if(i == j) G[i][j] = 0; else G[i][j] = INF; } } } void Folyd() { int i, j, k; for(k = 1 ; k <= n ; k++) { for(i = 1 ; i <= n ; i++) { for(j = 1 ; j <= n ; j++) { if(G[i][j] > G[i][k] + G[k][j]) G[i][j] = G[i][k] + G[k][j]; } } } } int main() { int i, x, k, j, Max; char s[N]; while(~scanf("%d ", &n)) { Init(); for(i = 2 ; i <= n ; i++) { for(j = 1 ; j < i ; j++) { scanf("%s", s); if(s[0] == i) G[i][j] = G[j][i] = INF; else { x = 0; for(k = 0 ; s[k] != ‘\0‘ ; k++) x = x * 10 + (s[k] - ‘0‘); G[i][j] = G[j][i] = x; } } } Folyd(); Max = 0; for(i = 1 ; i <= n ; i++) if(G[1][i] != INF) Max = max(Max, G[1][i]); printf("%d\n", Max); } return 0; }
标签:
原文地址:http://www.cnblogs.com/qq2424260747/p/4677321.html