[图论] pku1125 所有顶点对的最短路

评论1次阅读2007.09.02 20:09; 作者:Felicia 

简单题。很早以前做的。

下面是我的代码

下载: pku1125.cpp
#include <cstdio>
#include <cstring>
int n,i,j,k,tmp,best,nbest,t1,t2;
int a[110][110],num[110];
bool flag;
int main() {
    
while (scanf("%d",&n),n) {
        
memset(a,0x7f,sizeof(a));
        
for (i=1;i<=n;i++) {
            
scanf("%d",&num[i]);
            
for (j=1;j<=num[i];j++) {
                
scanf("%d%d",&t1,&t2);
                
a[i][t1]=t2;
            
}
        
}
        
for (i=1;i<=n;i++) a[i][i]=0;
        
for (k=1;k<=n;k++)
            
for (i=1;i<=n;i++)
                
for (j=1;j<=n;j++)
                    
if (a[i][k]!=0x7f7f7f7f && a[k][j]!=0x7f7f7f7f) a[i][j]<?=a[i][k]+a[k][j];
        
for (best=0x7fffffff,i=1;i<=n;i++) {
            
flag=false;
            
for (tmp=0,j=1;j<=n;j++) {
                
tmp>?=a[i][j];
                
if (a[i][j]==0x7f7f7f7f) {
                    
flag=true;
                    
break;
                
}
            
}
            
if (!flag) {
                
if (tmp<best) {
                    
best=tmp;
                    
nbest=i;
                
}
            
}
        
}
        
if (best==0x7fffffff) printf("disjoint\n");
        
else printf("%d %d\n",nbest,best);
    
}
    
return 0;
}

相关文章

  • 评论 (0)
  • 引用通告 (0)
发表评论 引用通告

暂无评论.

暂无引用通告