1134頂点カバー(25分)
グラフの頂点カバーは、グラフの各エッジは、セットの少なくとも1つの頂点に入射するような頂点の集合です。今、いくつかの頂点セットでグラフを与え、あなたはそれらのそれぞれが頂点被覆であるかどうかを伝えることになっています。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、2つの正の整数与える Nおよび M(両方を超えない 、それぞれ1)、頂点と辺の合計数であるが、。次いで、 M行は、それぞれ(0からまでインデックスを与えることによって、エッジを記述し、従う N - エッジの両端1)。
グラフ後、正の整数 Kは、(100以下)クエリの数であり、与えられます。次に、 クエリのK線は各形式で、次のとおりです。
NのV [ [
ここで、 Nは、Vは、セット内の頂点の数であり、 [ 'sは頂点のインデックスです。
出力仕様:
各クエリに対して、線で印刷 Yes
セットが頂点被覆である場合、または No
そうでない場合。
サンプル入力:
10 11
8 7
6 8
4 5
8 4
8 1
1 2
1 4
9 8
9 1
1 0
2 4
5
4 0 3 8 4
6 6 1 7 5 4 9
3 1 8 4
2 2 8
7 9 8 7 6 5 4 2
サンプル出力:
No Yes Yes No No
n接合縁にMは、k個のセットを得ました。kのこのセットは、1つずつ決定されます。各集合S内の数字はノード番号であり、
集合Sからの少なくとも1つのノードかどうかを、全体サイド全てのM図を横切ってノードを尋ね その場合、出力YesまたはNoの出力
ダイレクト預金は、ライン上の多くの側面があり、その後、セットを使用します
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 int型N、M、K、P。 4ベクトル< INT > V [ 10005 ]。 5 セット < int型 > S; 6 INT メイン(){ 7 CIN >> N >> M。 8 INT X、Y。 9 のためには、(int型、I = 1 ; I <= M; I ++ ){ 10 CIN >> X >> Y。 11 V [X] .push_back(I)。 12 V [Y] .push_back(I)。 13 } 14 CIN >> K。 15 一方(k-- ){ 16 CIN >> P。 17 セット < 整数 > ST; 18 のために(int型 I = 0 ; iは、Pを<Iは++ ){ 19 CIN >> X。 20 のために(INT J = 0 ; J <V [X] .size(); J ++ ){ 21 st.insert(V [X] [J])。 22 } 23 } 24 であれば(st.size()==M){ 25 COUT << " はい" << ENDL。 26 } 他{ 27 COUT << " いいえ" << ENDL。 28 } 29 } 30 リターン 0 。 31 }