思考のluogu 3441 [POI2006] MET-地下鉄トポロジカルソート+

コード:

// luogu-判定部イネーブル-O2 
の#include <キュー> 
の#include <cstdioを>   
する#include <アルゴリズム>   
の#define N 1000005 
の#define setIO(S)freopenは(S ".IN"、 "R"、STDIN)
名前空間を使用してSTD;   
キュー<整数> Q;   
整数nは、エッジ。
INTは゜[N]、HD [N << 1]、NEX [N << 1]、NUM [N]、DEP [N]、VISの[N]、[N]。
ボイド追加(INT U、V INT)
{ 
    NEX [++エッジ] = HD [U]、HD [U] =縁、[エッジ]へ= V。
}    
)(メインINT 
{ 
    I、J、L int型。   
    // setIO( "入力");   
    scanf関数( "%dの%のD"、&N、&L)。
    用(i = 1; iがn <; ++ I)
    { 
        int型、B。
        scanf関数( "%d個の%d個"、&
    }      
    のための(I = 1。      
    (!q.empty())、一方
    { 
        int型、U = q.front(); q.pop()。   
        以下のために(INT I = HD [U]; I; I = NEX [I])
        { 
            IF(VIS [する[I]]!)
            { 
                --deg [する[I]]。
                (DEG <= 1 [I]乃至])場合
                    VIS = DEP [U] + 1、q.push([I]へ)[I]乃至] = 1、DEP [I]に]。    
            } 
        } 
    }    
    (i = 1; iが<= N; I ++)用++ NUM [DEP [I]]。
    int型ANS = 0; 
    用(i = 0; iが<= N; I ++)   
        ANS + =分(2 * L、NUM [I])。  
    printf( "%d個の\ n"、ANS)。
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/guangheli/p/11490536.html