トピック接続します。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を返します。 }