本来求多源最短路现在变成多源间最大障碍,同理,一看顶点才最多300,FLOYD将其秒杀,速度还不慢
FLOYD真神了,既可以求多源最短路,亦可判断图的连通性,关键是代码实现简单……
View Code
#include<stdio.h>
#define MAX 0x3fffffff
int map[305][305];
int max(int a ,int b)
{
if(a>b)return a;
return b;
}
int main()
{
int n,m,end,i,j,k,a,b;
while(scanf("%d%d%d",&n,&m,&end)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j]=MAX;
}
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
scanf("%d",&map[a][b]);
}
int temp;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
temp=max(map[i][k],map[k][j]);
if(map[i][j]>temp)
map[i][j]=temp;
}
}
}
for(i=1;i<=end;i++)
{
scanf("%d%d",&a,&b);
if(map[a][b]!=MAX)
printf("%d\n",map[a][b]);
else
printf("-1\n");
}
}
}