河南省第五届ACM比赛【T6】
源代码如下:
#include <stdio.h>
#define maxn 31
int dis[maxn][maxn];
int main()
{
int N,n,i,j,k,m;
scanf("%d",&N);
while(N--)
{
m=0;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&dis[i][j]);
//判断第1个条件
for(i=0;i<n;i++)
if(dis[i][i]!=0)
{
m=1;
goto end;
}
//判断第2个条件
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i!=j && dis[i][j]<=0)
{
m=2;
goto end;
}
//判断第3个条件
for(i=0;i<n;i++)
for(j=0;j<i;j++)
if(dis[i][j]!=dis[j][i])
{
m=3;
goto end;
}
//判断第4个条件
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
if(i!=j&&i!=k&&j!=k&&dis[i][j]+dis[j][k]<dis[i][k])
{
m=4;
goto end;
}
end : printf("%d\n",m);
}
return 0;
}