hdu 4034 Graph Floyd
题意是告诉你全部一张图点与点之间的最短路,问你原图最少有几个点?
#include<bits/stdc++.h>
using namespace std;
int mp[100+5][100+5],d[100+5][100+5];
int main()
{
int _,n,i,j,k,p,ans;
scanf("%d",&_);
for(p=1; p<=_; p++)
{
scanf("%d",&n);
ans=0;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&mp[i][j]);
int flag=1;
memset(d,0,sizeof(d));
for(i=0; i<n; i++)
{
for(k=0; k<n; k++)
{
for(j=0; j<n; j++)
{
if(i==k||i==j||k==j) continue;
if(mp[i][j]==mp[i][k]+mp[k][j]&&!d[i][j])
ans++,d[i][j]=1;
if(mp[i][j]>mp[i][k]+mp[k][j])
{
flag=0;
break;
}
}
if(flag==0) break;
}
if(flag==0) break;
}
if(flag)
printf("Case %d: %d\n",p,n*(n-1)-ans);
else
printf("Case %d: impossible\n",p);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/