atcoder#ABC292E. [ABC292E] Transitivity

[ABC292E] Transitivity

配点 : 500500

問題文

頂点に 11 から NN の番号が、辺に 11 から MM の番号がついた NN 頂点 MM 辺の単純有向グラフが与えられます。辺 ii は頂点 uiu_i から頂点 viv_i への有向辺です。

また、あなたは次の操作を 00 回以上何度でも行えます。

  • 相異なる頂点 x,yx,y であって頂点 xx から頂点 yy への有向辺が存在しないようなものを選ぶ。そして、頂点 xx から頂点 yy への有向辺を追加する。

このグラフが次の条件を満たす状態にするために最小で何回操作を行う必要があるかを求めてください。

  • 相異なる頂点 a,b,ca,b,c すべてについて、頂点 aa から頂点 bb への有向辺と頂点 bb から頂点 cc への有向辺がともに存在するならば頂点 aa から頂点 cc への有向辺も存在する。

制約

  • 3N20003 \leq N \leq 2000
  • 0M20000 \leq M \leq 2000
  • 1ui,viN1 \leq u_i ,v_i \leq N
  • uiviu_i \neq v_i
  • iji \neq j ならば (ui,vi)(uj,vj)(u_i,v_i) \neq (u_j,v_j)
  • 入力はすべて整数

入力

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

NN MM

u1u_1 v1v_1

\vdots

uMu_M vMv_M

出力

答えを出力せよ。

4 3
2 4
3 1
4 3
3

初め、一例として頂点 2,4,32,4,3 について、頂点 22 から頂点 44 への有向辺と頂点 44 から頂点 33 への有向辺がともに存在するにもかかわらず、頂点 22 から頂点 33 への有向辺は存在せず、条件を満たさない状態です。

そこで、以下の 33 本の有向辺を追加すると条件を満たす状態になります。

  • 頂点 22 から頂点 33 への有向辺
  • 頂点 22 から頂点 11 への有向辺
  • 頂点 44 から頂点 11 への有向辺

一方、33 本未満の追加で条件を満たす状態には出来ないため、答えは 33 です。

292 0
0
5 8
1 2
2 1
1 3
3 1
1 4
4 1
1 5
5 1
12