简单题。很早以前做的。贴一下凌乱的代码。

#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;
}

posted on 2007-09-02 20:09 Felicia 阅读(491) 评论(2)  编辑 收藏 引用 所属分类: 图论
Comments
  • # re: [动态规划]pku1125
    @潘帕斯雄鹰
    Posted @ 2007-09-09 09:08
    这不是弗洛伊德么,怎么会是动态规划?  回复  更多评论   
  • # re: [动态规划]pku1125
    Felicia
    Posted @ 2007-09-09 09:10
    晕。还是放到图论里吧。以前做的,没仔细看。
    p.s. Floyd算法也可以理解成是动态规划。  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理