uva10048(フロイド)Audiophobia

トピック接続します。https://onlinejudge.org/index.phpオプション= com_onlinejudge&ITEMID = 8&カテゴリ= 12&ページ= show_problem&問題= 989?

問題の意味:ノイズの最小最大数の期間のSTA端からすべてのパスを求めることにより、2つのSTAの町、端部を、所定のm個の経路が存在し、各経路は雑音に有するであろう、町N所与。


例えば:

図1〜7 1367,1347,1257,1247は、これらの4つの経路が120,80,90,120ノイズ最大値た前記最大ノイズの最小値は80である4つの経路を有しています。

 

アイデア:

フロイドの最短パスアルゴリズム限り、2つのパスが選択された最小のG [I] [J]、出力G [STA] [終了]に割り当てられた比較大きなノイズを得られます。

#include <ビット/ STDC ++ H.> 
使用して名前空間STD; 
のconst int型N = 100; 
INT G [N] [N]; 
int型N-、M、QUE; 
;のconst int型INF = 0x3f3f3f3f 

(フロイドを無効){ 
    (INT K用= 1; K <= N; K ++){ 
        ため(INT I = 1; I <= N - 、Iは++){ 
            ため(INT J = 1; J <= N; J ++){ 
                int型マックス= G [I] [K <G [k]は[J ] G [J] [K]:?G [i]が[K]; // 最大値kにおける各転換点、このロードノイズを見つけ
                た場合には(G [i]が[ J]> MAXX){//ノイズ最大値最小値
                    G [I] [J] =マックス; 
                } 
            } 
        } 
    } 
} 
int型のmain()
{ 
    int型= T. 1; 
    ながら(〜scanfの(「%D%D% D」、&N、&M 、&​​QUE)&& N || m個の||のQUE){
        memsetの(G、INF、はsizeof( G)); //は無限の初期化 
    }
        A、B、Cのint; 
        {ため(; iがm <I ++は、I = 0 INT)
            CIN >> A >> B >> Cと、
            G [A] [B] = G [B] [A] = Cを、
        } 
        フロイド()。
        もし(T = 1!){ 
            のprintf( "\ n")を。
        } 
        のprintf( "ケース#%d個の\ n"、T ++)。
        int型の駅、終了。
        (que--){一方
            のscanf( "%d個の%のD"、&STA、およびエンド)。
            IF(G [STA] [終了] <INF){//若是无穷、则说明无解
                のprintf( "%Dを\ n"、G [STA] [END])。
            } 
            他{ 
                のprintf( "なしパスの\ n"); 
            } 
        }
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/clb123/p/11652582.html