最短路 poj1502 MPI Maelstrom


一个三角形矩阵,给一个n,n行n列,当i==j的时候不显示,A(i,j)代表i到j的路程,最后求1到1...n的最短路的最大值。

这道题n的数据范围是100,所以可以用Floyd算法

-----------------------------------------------------------------------------------------

#include <iostream> #include <math.h> #include <algorithm> #include <cstdio> #include <cstring> #define MAXN 520 #define MAXM 6000 #define INF 0Xffffff #define N 100 using namespace std ; int d[MAXN][MAXN]; int dis[MAXN]; int n; int ans; int tmp; int Map[2000][2100]; int v[2120]; int low[2110]; int flag; void init() { for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) Map[i][j] = Map[j][i]= INF; } int main() { char str[N][N][N]; while(scanf("%d",&n)!=EOF) { init(); for(int i=2; i<=n; i++) { for(int j=1; j<i; j++) { scanf("%s",str[i][j]); if(strcmp(str[i][j],"x")!=0) { Map[i][j]=atoi(str[i][j]); Map[j][i]=Map[i][j]; } else { Map[i][j]=0x3f3f3f3f; Map[i][j]=Map[j][i]; } } } for(int k = 1; k<=n; k++) for(int i = 1; i<=n; i++) for(int j=1; j<=n; j++) { if(Map[i][j]>Map[i][k]+Map[k][j]) Map[i][j] = Map[i][k]+Map[k][j]; } int big = -INF; for(int i = 1; i<=n; i++) { if(Map[1][i] > big) big = Map[1][i]; } printf("%d\n",big); } return 0; }

 

posted @ 2016-07-25 14:23  biu~biu~biu~  阅读(105)  评论(0编辑  收藏  举报