#jag2017summerday1i. [jag2017summer_day1_i]ルーク

[jag2017summer_day1_i]ルーク

問題文

11 辺が 40004000 マスのチェス盤があり、その上にルークが NN 置かれています。 ii 番目のルークは RiR_i 行目 CiC_i 列目のマスに置かれています。

それを見た黒猫のスヌケ君は出来るだけ少ない個数のルークを取り除くことによって、どの行や列にもルークが高々 11 個しかないようにしたいと考えました。 スヌケ君はいくつのルークを取り除けばいいでしょうか? また、その個数を達成するために必ず取り除かなければいけないルーク、絶対に取り除いてはいけないルークがどれなのかも求めてください。

制約

  • 1N400001≦N≦40000
  • 1Ri,Ci40001≦R_i,C_i≦4000
  • 同じマスに複数のルークが置かれていることはない

入力

入力は以下の形式で標準入力から与えられる。

NN R1R_1 C1C_1 R2R_2 C2C_2 :: RNR_N CNC_N

出力

11 行目には取り除くルークの最小個数を出力せよ。 さらに、続く NN 行のうち ii 行目には、ii 番目のルークに関する以下のような値を出力せよ。

  • ii 番目のルークを必ず取り除かなければならない場合: 11
  • ii 番目のルークを絶対に取り除いてはいけない場合: \-1\-1
  • それ以外の場合: 00

入力例 1

6
1 1
1 3
2 1
2 2
2 3
3 2

出力例 1

3
0
0
0
1
0
-1

取り除く個数が最小になるようなルークの取り除き方は下図のような 22 通りが考えられますが、 44 番目のルークはいずれにおいても取り除かれており、66 番目のルークはいずれにおいても取り除かれていません。

8e0ee23b7ecee60f72885491dcc28a04.png


入力例 2

9
1 2
2 2
2 1
3 3
4 6
4 5
4 4
5 4
6 4

出力例 2

4
-1
1
-1
-1
0
0
1
0
0