辺の数を制限する853あり最短ベルマン・フォードをAcWing

// 負環を処理負重量 
 // 我々が負のサイクルを見つけることができる場合は、一般的に存在しない
 // 最小距離は負の無限大であり得ることを負ループ場合 
の#include <CStringの> 
する#include <iostreamの>
 使用して 名前空間STD;
 CONST  INT N = 1E4 + 1。;
 構造体のエッジ{
     INT A、
     INT B;
     INT W; 
}エッジ[N]; 
int型N-、M、K;
 INT DIST [N]、バックアップ[N];
 ボイドbellman_ford(){ 
    memsetの(DIST 、は0x3Fはsizeof DIST); 
    DIST [ 1 ] = 0 ;
    /// / K番目の反復示しもはやKエッジは、各点から来るより
    ためINT I = 0 ;私は<K; I ++ ){ 
        memcpyを(バックアップ、DIST、はsizeof DIST); // バックアップしませんバックアップ系列なしで起こり得る
        ためのINT = J 0、J <M、J ++ ){
             int型 A =エッジ[J] II.A、B =エッジ[J] .B、W = エッジ[J] .W。
            DIST [ B] =分(DIST [B]、バックアップ[] + W); // 時間だけ費やす
        } 
    } 
    IF(DIST [N - ]> 0x3f3f3f3f / 2)COUT << " 不可" 他のCOUT << DIST [N]。
} 
int型のmain(){ 
    CIN >> N >> M >> K。
    以下のためにINT iは= 0 ; I <M; iは++ ){
         int型、B、W。
        CIN >> B >> ワット。
        エッジ[I] = {A、B、W}。
    } 
    )(bellman_ford。
    リターン 0 ; 
}

 

 

おすすめ

転載: www.cnblogs.com/QingyuYYYYY/p/11842161.html