我用的floyd,很水,直接整。天大OJ的这个神棍题很有爱……
原题链接:http://acm.tju.edu.cn/toj/showp1111.html
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#define N 101
#define MAX 1<<29
int main()
{
char ch[10];
int n,i,j,k,max,mat[N][N];
while(~scanf("%d",&n)){
memset(mat,0,sizeof(mat));
for(i=2;i<=n;i++){
for(j=1;j<i;j++){
scanf("%s",ch);
if(ch[0]!='x')mat[i][j]=mat[j][i]=atoi(ch);
else mat[i][j]=mat[j][i]=MAX;
}
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
if(mat[i][k]+mat[k][j]<mat[i][j])mat[i][j]=mat[i][k]+mat[k][j];
}
}
for(max=-1,i=2;i<=n;i++){
if(mat[1][i]>max)max=mat[1][i];
}
printf("%d\n",max);
}
return 0;
}