【floyd 多源最短路】 poj 1125

#include <stdio.h>
#include <iostream>
#include <memory.h>
using namespace std;
int stb[][];
//int min(int x,int y)
//{
// return x<y?x:y;
//}
void Floyd(int n)
{
int i,j,k;
for(k=;k<=n;k++)
for(i=;i<=n;i++)
for(j=;j<=n;j++)
stb[i][j]=min(stb[i][j],stb[i][k]+stb[k][j]);
}
int main()
{
// freopen("in.txt","r",stdin);
int i,j;
int num,num1,n,dis;
int line,ansmix,linemax;
while()
{
scanf("%d",&num);
if(num==)
break;
for(i=;i<=num;i++)
for(j=;j<=num;j++)
stb[i][j]=;
for(i=;i<=num;i++)
{
scanf("%d",&num1);
stb[i][i]=;
for(j=;j<num1;j++)
{
scanf("%d %d",&n,&dis);
stb[i][n]=dis;
}
}
Floyd(num);
ansmix=;
for(i=;i<=num;i++)
{
linemax=;
for(j=;j<=num;j++)
{
if(stb[i][j]>linemax)
{
linemax=stb[i][j];
}
}
if(linemax<ansmix)
{
ansmix=linemax;
line=i;
}
}
if(ansmix==)
printf("disjoint\n");
else
printf("%d %d\n",line,ansmix);
}
return ;
}
上一篇:【转】C++的拷贝构造函数深度解读,值得一看


下一篇:Hibernate从入门到了解