问题地址: http://acm.jlu.edu.cn/joj/showproblem.php?pid=1002
我的代码:(存在编译错误,但小弟没找出来,汗!!)
#include<iostream>
using namespace std;
#define MAX 1000;
int main ()
{
int a[101][101],b[101][101],c[101];
int m,n,i,j,k,x,v;
int start_i,min_i;
while(cin>>m)
{
for(i=1;i<m;i++)
for(j=1;j<m;j++)
a[i][j]=MAX;
for(i=1;i<m;i++)
a[i][j]=MAX;
for(i=1;i<=m;i++)
{
cin>>n;
for(j=1;j<n;j++)
{
cin>>x>>v;
a[i][x]=v;
}
}
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
b[i][j]=a[i][j];
for(k=1;k<=m;k++)
if(b[i][j]>a[i][k]+a[k][j])
b[i][j]=a[i][k]+a[k][j];
}
for(i=1;i<=m;i++)
{
c[i]=b[i][1];
for(j=1;j<=m;j++)
if(c[i]<b[i][j])
c[i]=b[i][j];
}
min_i=c[1];
start_i=1;
for(i=1;i<m;i++)
if(min_i>c[i])
{
min_i=c[i];
start_i=i;
}
if(min_i==MAX)
cout<<"disjoint"<<endl;
else
cout<<start_i<<" "<<min_i<<endl;
}
return 0;
}