[BZOJ1202] [HNOI2005]狡猾なビジネスマン

溶液

   emmm ......差動制約裸のタイトル。収入の金額正と負の値が、そうでも0エッジ私のようなスマートにしようとしないことに注意してください。

  また、複数のデータセットが空ではない、OIはゼロ参照の先祖をバースト。

  コード

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
CONSTの INT N = 105、M = 1005 
インラインint型リード(){
     int型のx = 0、W = 0CHAR CH = 0 しばらく W | = CH ==(isdigit(CH)!)' - '、CH = getchar関数();
    一方、(isdigit(CH))X =(X << 1)+(X << 3)+(CH ^ 48)、CH = GETCHAR()。
    リターン? -ワット; X:X 
} 
構造体のエッジ{
    int型のV、W、最後; 
} E [M << 1 ]。
int型のTOT、尾[N]; 
インラインボイド追加(int型のx、int型の Y、int型Z){ 
    E [ ++ TOT = (エッジ){Y、Z、尾[X]}。
    尾[X] = TOT。
} 
int型、T、N、M、D [N]。
BOOL VIS [N]。
BOOL dfs_SPFA(INT X){ 
    VIS [X] = INT ; P P = P =尾[X] {E [P] .last)
         INT&V = E [P] .V、&W = E [P] .W。
        もし(D [x]は<W + {D [V])
            dは[V]、D [X] + = Wは、
            もし(VIS [V] ||!dfs_SPFA(V))
                 を返す 
        } 
    } 
    VIS [X] = 返す ; 
} 
ブールチェック(){     
    memsetの(D、0はsizeof D)。
    memsetの(VIS、0はsizeof VIS)。
    以下のためにint型私= 0 ;私は= N <; ++ I)
         の場合(!dfs_SPFA(I))返す ;
    返す ; 
} 
int型のmain(){ 
    T = 読み取ります()。
    一方、(t-- ){     
        TOT = 0 ;のmemset(尾、0はsizeof 尾)。
        N = read()は、M = read()は、
        一方、(M-- ){
             int型のx =読み取る()、y)は(読み取り=、Z =を読み取ります()。// Y、X-1 
            の追加(Y、X- 1、-z)、追加(X- 1 、Y、Z)。
        } 
        // ための式(I = 0 int型、iがN <; ++ i)が(I + 1をI 0)を追加します。
        プット(チェック()?" "" " ); 
    } 
    戻り 0 
}
BZOJ1202

 

おすすめ

転載: www.cnblogs.com/gosick/p/11246892.html