HDU2112(ハッシュ+ダイクストラ)

#include <iostreamの> 
する#include <cstdioを> 
する#include < ストリング > 
の#include <地図> 
の#include <CStringの>
 に#define INF(0x3f3f3f3f)
 使用して 名前空間STDを、
CONST  INT MAXN = 150 + 15 int型グレープ[MAXN] [MAXN]。
マップ < 文字列int型 > メートル。
int型 D [MAXN]。// sの到每个节点的距离
ブールVIS [MAXN]。
文字列startPos、endposの。
int型のCNT;
ボイド  ダイクストラ() 
{ 
    memsetの(VIS、はsizeof (VIS))。
    memsetの(D、INF、はsizeof (d)参照)。
    INT =スタートM [startPos]。
    INT端= M [endposの]。// 終了する開始单源最短距离 
    D [スタート] = 0 ;
    一方、
    { 
        int型 mincost = INF、U = 0 int型 V = 1 ; V <= CNT ++ V)
        { 
            場合(!VIS [V] && D [V] < mincost)
            { 
                mincost =D [V]。
                uが = Vを。
            } 
        } 
        もし(mincost == INF)
             ブレーク
        VIS [U] = ;
        int型 V = 1 ; V <= CNT; ++ V)
        { 
            場合(VIS [V] && D [U] +グレープ[U] [V] <!D [V])
            { 
                D [V] =グレープ[ U] [V] + D [U]。
            } 
        } 
    } 
    もし、(D [END] == INF)
        COUT << " -1 " <<ENDL;
     他の
        COUT << D [終了] << ENDL; 
} 
int型)(主// ハッシュは、ブドウが単一始点最短経路を求めて構築された
{
     int型N-、
     一方(CIN >> N-N - && =! - 1。 
    { 
        のmemset(ブドウ、INF 、はsizeof(ブドウ)); // INFノードは、UVの代わりに通信しない 
        = CNT 0 ; // 建設S - E双方向図の
        m.clear(); 
        CIN >> startPosのendposの; 
        M [startPos] = ++ CNT。
        M [endposの] = ++ CNT;
          POS1、POS2。// POS1側からビルドとPOS2する
        IF(N - == 0 
        { 
            IF(startPosが== endposの)
                COUT << 0 << ENDL;
             他の
                COUT << - 。1 << ENDL;
             続行; 
        } 
        一方(N-- 
        { 
            CIN >> POS1 POS2、
             INT U、V;
             もし(!m.count(POS1))
                M [POS1] = CNT ++; // 開始ノードからノードを構築する
            場合(!M.count(POS2))
                M [POS2] = ++ CNT; 
            U = M [POS1]; 
            V = M [POS2];
             int型 W; // エッジ重み値 
            CIN >> W; 
            グレープ[U] [V]グレープ[V] [U] = = ; W 
        } // 図構築
        ダイクストラを(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/newstartCY/p/11563687.html