题目链接:http://poj.org/problem?id=1502
题意:求从处理器1到其它处理器所需的最少时间是多少;
输入是下三角,如果是x表示A【i】【j】不能直接联系;
#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; #define N 110 #define INF 0xfffffff int maps[N][N], n; void floyd() { for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { maps[i][j]=min(maps[i][k]+maps[k][j], maps[i][j]); } } int main() { while(scanf("%d", &n)!=EOF) { memset(maps, 0, sizeof(maps)); for(int i=2; i<=n; i++) { for(int j=1; j<i; j++) { char s[10]; scanf("%s", s); if(s[0]=='x') maps[i][j] = maps[j][i] = INF; else { int num = 0; for(int k=0; s[k]; k++) num = num*10 + s[k]-'0'; maps[i][j] = maps[j][i] = num; } } } floyd(); int Max=0; for(int i=1; i<=n; i++) Max = max(Max, maps[1][i]); printf("%d ", Max); } return 0; }