UVA11354ボンド互いに素セット

  問題の意味:なし、図エッジに対するM n個の点を考慮すると、危険性がある各エッジ、クエリーQがあり、それぞれ所定の2点S、Tは、方法を見つけるような上部経路は、その最小限の最大のリスク

 

ランクによってばらばらセットをマージ

パス圧縮は、そうでない場合は、そのツリー構造を弱体化させることはできません

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
// BXDによる入力
の#define担当者(iは、b)のための(; iは=(b)の<I ++はiは(A)= INT)
 の#defineためreppを(I、B)(I =(A int型); I> =(B); - I)
 の#defineが長い長いちゃう
 の#define(X)(CERR <<(#xを)参照<< '=' <<(X)<< ENDL)
 の#define PB一back
 #define INF 0x3f3f3f3f
 の#define CLR(A、V)のmemset(A、V、Aはsizeof)
のtypedef対 < INTINT > PII。
///////////////////////////////// / 
CONSTの INT N = 1E6 + 10 

int型F [N]、X、Y、Q、N、M、SIZ [N]、W [N]。
構造体のエッジ
{ 
    int型U、V、W。
}エッジ[N]。
INT find1(INT X)
{ 
    戻り F [X] == X?X:find1(F [X])。
} 

ボイドkruscal()
{ 
    (ソートエッジ + 1、エッジ+ 1 + M、[](エッジA、エッジB){ 戻り AW < BW;});
    int型 CNT = 0 ; 
    担当者(I、1、N)F [I] = I、SIZ [I] = 1 
    CLR(W 0 )。
    担当者(I、1 、M)
    { 
        int型X = find1(エッジ[I] .U)、Y = find1(エッジ[I] .V)。
        もし(x == y)を続けますもし(SIZは、[X] < SIZ [Y])
        { 
            fは[X] = Y。
            SIZ [Y] = MAX(SIZ [Y]、SIZ [X] + 1 )。
            W [X] = エッジ[I] .W。
        } 
        エルス
        { 
            [Y] F =のX。
            SIZ [X] = MAX(SIZ [x]は、SIZ [Y] + 1 )。
            W [Y] = エッジ[I] .W。
        } 
        CNT ++ もし(CNT == n個1ブレーク
    } 
} 
INT [N] C。
INTクエリ(int型のx、int型のY)
{ 
    担当者(I、1、N)C [I] = - 1 int型 ANS = 0、温度= 0 ;
    一方、1 
    { 
        C [X] = TEMP。
        もし(F [X] == x)のブレーク
        TEMP = MAX(温度、W [X])。
        X = F [X]。
    } 
    一方、1  
    {
        もし、(C [Y]> = 0){ANS = MAX(ANS、C [Y])。ブレーク ;} // LCA相同时就退出
        する場合(F [Y] == y)のブレーク
        ANS = MAX(ANS、W [Y])。
        Y = F [Y]。
    } 
    戻りANS。
} 

int型のmain()
{    
    int型 OK = 0 一方、(scanf関数(" %D%dの"、&​​N、&M)== 2 
    {    
        場合(OK)のprintf(" の\ n " ); 
        OK = 1; 
        担当者(I、1 、M)
        のscanf(" %D%D%D "、およびエッジ[I] .U、&エッジ[I] .V、&エッジ[I] .W)。
        kruscal(); 
        scanf関数(" %のD "、&Q)。
        一方、(q-- 
        { 
            scanf関数(" %D%dの"、およびX&Y)。
            printf(" %d個の\ n " 、クエリ(X、Y))。
        } 
    } 
    戻り 0 
}
コードの表示

おすすめ

転載: www.cnblogs.com/bxd123/p/11335096.html