[PAT]グレード1013バトル以上の都市(25分)(互いに素なセット、単に接続グラフ)

質問の意味:

三つの整数N、M、K(N <= 1000、第4のデータ1E5 <= M <= 1E6)を入力します。1〜Nの都市は、Mの高速道路は、ありますが、K時間はすべての高速道路、敵によって占め都市を入力してください頼む常に求められ、市が接続されているすべてを使用することはできません、どのように多くの高速道路の残りの部分は、需要を増やすことができます中国聯通でN-1都市。(そうでなければ都市間の通信ではないかもしれない、オリジナルと仮定するのみチャイナユニコム0,4データを介して)。

トリック:

多くの時間を支払うために同じコードは、数回は、最初の4つのポイントをアウトになります。(疑わしいです)

コード:

#include <ビット/ STDC ++ H>
名前空間STDを使用して、
[1000007] INT、[1000007] B。
int型FA [1007];
INT find_(INT X){
IF(FA [X] == x)を
リターンX。

戻りFA [X] = find_(FA [X])。
}
int型のmain(){
int型N、M、K。
CIN >> N >> M >> K。
(I 1 = int型; I <= M; ++ i)について
CIN >> [I] >> B [i]は、
(I = 1をint型、私は= Kを<; ++ i)のための{
int型のX;
cinを>> X;
(INT J = 1; J <= N; ++ j)のための
FA [j]は、jは=。
用(INTのJ = 1; J <= M; ++ J){
IF([J] == X || B [j] == x)を
続けます。
INT、T = find_([J])。
INT TT = find_(B [J])。
(T = TT!)もし
FA [T] = TT;
}
int型のCNT = -1; //联通块的数量-1
ため(INT J = 1; J <= N。
(J == X)IFは
続行;
IF(FA [J] == J)
CNT ++;
}
COUT CNT << << "\ N-"; //ブロックの数ユニコム-1
}
戻り0;
}

おすすめ

転載: www.cnblogs.com/ldudxy/p/11243535.html