私はシンプルを追求849ダイクストラの最短経路をAcWing

 

 

 

// 負の重み
 // 我々が負のサイクルを見つけることができる場合、一般的に存在しない
 // 最小距離は負の無限大であり得ることを負ループ場合 
の#include <CStringの> 
する#include <iostreamの>
 使用して 名前空間STD;
 constの 整数 N = 1E4 + 1。;
 構造体のエッジ{
     INT A;
     int型のB;
     INT W; 
}エッジ[N]; 
int型N-、M、K;
 INT DIST [N]、バックアップ[N];
 ボイドbellman_ford(){ 
    memsetの(DIST、は0x3Fsizeof DIST); 
    DIST [ 1 ] = 0 ;
    /// / K番目の反復示しもはやKエッジは、各点から来るより
    ためINT I = 0 ;私は<K; I ++ ){ 
        memcpyを(バックアップ、DIST、はsizeof DIST); // バックアップしませんバックアップ系列なしで起こり得る
        ためINT J = 0 ; J <M、J ++ ){
             IF(DIST [エッジ[J] .B]>バックアップ[エッジ[J] II.A] + エッジ[J] .W){
                 INT A =エッジ[J] II.A、B =エッジ[J] .B、W = エッジ[J] .W; 
                DIST [B] =分(DIST [B]、バックアップ[A] + W); 
            } 
        } 
    } 
    IF(DIST [N - ]> 0x3f3f3f3f / 2)裁判所未満<< 不可能他の 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/11842142.html
おすすめ