A - 一般最大マッチング
Editorial
/
Time Limit: 3 sec / Memory Limit: 1024 MB
問題文
グラフが与えられるので、最大マッチングを求めてください。
スライド、想定解、テストケースへのURLです。 リンク
入力
入力は以下の形式で標準入力から与えられる。
T N M a_1 b_1 a_2 b_2 : a_M b_M N M a_1 b_1 a_2 b_2 : a_M b_M N M a_1 b_1 a_2 b_2 : a_M b_M : : : N M a_1 b_1 a_2 b_2 : a_M b_M
- 1 行目にはテストケース数 T が与えられる。
- 2 行目から T 個、テストケースの情報が与えられる。各テストケースの情報は以下の通り。
- テストケースのうち 1 行目に、頂点数と辺数 N, M が与えられる。
- テストケースのうち 2 行目から M 行には、a_i, b_i(0 ≦ a_i, b_i < N) が与えられる。これは辺 (a_i, b_i) を表す。
- テストケースとテストケースの間には空行が挟まっている。
- 多重辺、自己ループは無いが、グラフは連結とは限らない。
出力
T 行出力する。i 行目には、i 番目のテストケースで求めた最大マッチングを出力する。
具体的には、空白区切りで N 個の出力をする。i 番目には頂点 i のマッチング相手を出力する。マッチングしない場合は -1。
たとえば、頂点数が 5 で、(0, 4) と (1, 2) をマッチングさせたいなら以下のように出力。
4 2 1 -1 0
テストケース詳細
テストケースは全部で 5 ケースあり、以下のようになっています
Case1: T = 5000, 1 ≦ N ≦ 8 ランダムグラフ
Case2: T = 5000, 10 ≦ N ≦ 20 ランダムグラフ
Case3: T = 500, 50 ≦ N ≦ 100 ランダムグラフ
Case4: T = 50, 200 ≦ N ≦ 300 ランダムグラフ
Case5: T = 10, 200 ≦ N ≦ 300 マッチングする辺を決めて、最大マッチングがそれを超えない限り辺を追加し続けたグラフ
入力例1
10 2 1 0 1 3 2 0 1 1 2 4 3 0 1 1 2 2 3 5 6 0 2 0 4 1 2 2 3 2 4 3 4 6 7 0 3 1 2 1 3 1 4 2 4 3 4 3 5 9 17 0 2 0 4 0 5 0 6 0 7 1 5 1 7 2 3 2 5 2 6 2 8 3 4 3 6 4 5 4 6 4 8 5 8 5 4 0 4 1 3 1 4 2 4 8 10 0 4 0 5 1 2 1 6 1 7 2 4 2 6 3 4 3 5 3 6 10 20 0 1 0 5 0 7 0 8 1 5 1 6 1 7 1 9 2 3 2 6 2 9 3 6 4 5 4 8 5 7 5 8 5 9 6 7 7 9 8 9 9 17 0 1 0 4 1 2 1 3 2 3 2 4 2 5 2 7 3 6 3 8 4 6 4 7 4 8 5 6 5 8 6 7 6 8
出力例1
1 0 1 0 -1 1 0 3 2 2 -1 0 4 3 3 2 1 0 -1 -1 7 5 6 4 3 1 2 0 -1 4 3 -1 1 0 4 7 6 5 0 3 2 1 1 0 3 2 5 4 7 6 9 8 1 0 3 2 6 8 4 -1 5