雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最短路变形PKU3615——FLOYD

Posted on 2011-02-15 21:29  huhuuu  阅读(265)  评论(0编辑  收藏  举报
本来求多源最短路现在变成多源间最大障碍,同理,一看顶点才最多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");
}
}
}