巢穴

about:blank

P1125

FLOYD
一定要注意,floyd的本质是动态规划

#include <iostream>
using namespace std;

const int MAXN=101;
int dist[MAXN][MAXN];
int max_[MAXN];
int main()
{
    
int n,m;
    
while(1)
    
{
            cin
>>n;
            
if (0==n) break;
            
for (int i=1;i<=n;i++)
                
for (int j=1;j<=n;j++)
                    dist[i][j]
=0xffff;
            memset(max_,
0,sizeof(max_));
            
for (int i=1;i<=n;i++)
                dist[i][i]
=0;
            
for (int i=1;i<=n;i++)
            
{
                cin
>>m;
                
for (int j=1;j<=m;j++)
                
{
                    
int to,temp;
                    cin
>>to>>temp;
                    dist[i][to]
=temp;
                }

            }

            
for (int i=1;i<=n;i++)
             
for (int j=1;j<=n;j++)
              
for (int k=1;k<=n;k++)
              
{
                  
int dist_=dist[j][i]+dist[i][k];
                  
if (dist[j][k]>dist_) dist[j][k]=dist_;
              }

           
for (int i=1;i<=n;i++)
           
{
            
for (int j=1;j<=n;j++)
            
{
                
if (j==i) continue;
                
if (max_[i]<dist[i][j]) max_[i]=dist[i][j];
            }

           }

          
int min=0x7fffffff;
          
int k=0;
          
for (int i=1;i<=n;i++)
          
{
              
if (min>max_[i]) {min=max_[i];k=i;}
          }

          cout
<<k<<" "<<min<<endl;
         
// system("pause");
    }

    
return 0;
}

posted on 2009-10-05 11:28 Vincent 阅读(84) 评论(0)  编辑 收藏 引用 所属分类: 数据结构与算法


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