POJ 2263 Heavy Gargo

POJ 2263 Heavy Gargo
题目大意是,给出一个无向图,求两点间某条路径上的边的容量的最大值。可以使用Floyed算法实现,用d[i][j]表示从第i个点到第j个点的全部的路径上的容量最大值,则d[i][j]=max(d[i][j],min(d[i][k],d[k][j]))。
以下是我的代码:
/*
 * Author:  lee1r
 * Created Time:  2011/8/2 16:17:25
 * File Name: poj2263.cpp
 
*/
#include
< iostream >
#include
< sstream >
#include
< fstream >
#include
< vector >
#include
< list >
#include
< deque >
#include
< queue >
#include
< stack >
#include
< map >
#include
< set >
#include
< bitset >
#include
< algorithm >
#include
< cstdio >
#include
< cstdlib >
#include
< cstring >
#include
< cctype >
#include
< cmath >
#include
< ctime >
#define  L(x) ((x)<<1)
#define  R(x) (((x)<<1)+1)
#define  Half(x) ((x)>>1)
#define  lowbit(x) ((x)&(-(x)))
using   namespace  std;
const   int  kInf( 0x7f7f7f7f );
typedef 
long   long  int64;
typedef unsigned 
long   long  uint64;
const   int  kMaxn( 207 );

int  T,n,m,cnt,d[kMaxn][kMaxn];
map
< string , int >  id;

int  main() 
{
    
// freopen("data.in","r",stdin);
    
    T
= 0 ;
    
while (scanf( " %d%d " , & n, & m) == 2   &&  (n  ||  m))
    {
        cnt
= 0 ;
        id.clear();
        memset(d,
0 , sizeof (d));
        
/*
        for(int i=0;i<kMaxn;i++)
            d[i][i]=kInf;
        
*/
        
string  a,b;
        
for ( int  i = 1 ;i <= m;i ++ )
        {
            
int  w;
            cin
>> a >> b;
            scanf(
" %d " , & w);
            
if ( ! id.count(a))
                id[a]
=++ cnt;
            
if ( ! id.count(b))
                id[b]
=++ cnt;
            d[id[a]][id[b]]
= d[id[b]][id[a]] = w;
        }
        
/*
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                printf("%d ",d[i][j]);
            printf("\n");
        }
        
*/
        
for ( int  k = 1 ;k <= n;k ++ )
            
for ( int  i = 1 ;i <= n;i ++ )
                
for ( int  j = 1 ;j <= n;j ++ )
                    d[i][j]
= max(d[i][j],min(d[i][k],d[k][j]));
        
        cin
>> a >> b;
        printf(
" Scenario #%d\n " , ++ T);
        printf(
" %d tons\n\n " ,d[id[a]][id[b]]);
    }
    
    
return   0 ;
}

你可能感兴趣的:(POJ 2263 Heavy Gargo)