atcoder#ABC245F. [ABC245F] Endless Walk

[ABC245F] Endless Walk

配点 : 500500

問題文

NN 頂点 MM 辺からなる単純な有向グラフ GG があり、頂点には頂点 11, 頂点 22, \ldots, 頂点 NN と番号がついています。 また、ii (1iM)(1\leq i\leq M) 本目の辺は頂点 UiU_i から頂点 ViV_i へ張られています。

高橋君がある頂点から始めて、GG の上を有向辺に沿って頂点から頂点へ移動することを繰り返します。 GG の頂点のうち、高橋君がうまく経路を選ぶことで、その頂点から始めていくらでも移動を繰り返すことができるようなものの個数を求めてください。

制約

  • 1N2×1051 \leq N \leq 2\times 10^5
  • 0Mmin(N(N1),2×105)0 \leq M \leq \min(N(N-1), 2\times 10^5)
  • 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

U2U_2 V2V_2

\vdots

UMU_M VMV_M

出力

答えを出力せよ。

5 5
1 2
2 3
3 4
4 2
4 5
4

頂点 22 を始点とした場合、頂点 22 \to 頂点 33 \to 頂点 44 \to 頂点 22 \to 頂点 33 \to \cdots と高橋君はいくらでも移動を繰り返す事ができます。 頂点 33, 頂点 44 を始点とした場合も同様です。 頂点 11 からは最初に頂点 22 に移動して、以下同様にいくらでも行動を繰り返すことができます。 一方、頂点 55 からは一度も移動することができません。

よって、条件を満たすのは頂点 11, 22, 33, 4444 つであるので、 44 を出力します。

3 2
1 2
2 1
2

単純な有向グラフにおいて、22 つの頂点の間を互いに逆向きに結ぶ辺が、ともに存在する事はあり得ることに注意してください。 また、GG は連結であるとは限りません。