atcoder#ABC245F. [ABC245F] Endless Walk

[ABC245F] Endless Walk

题目描述

N N 頂点 M M 辺からなる単純な有向グラフ G G があり、頂点には頂点 1 1 , 頂点 2 2 , \ldots , 頂点 N N と番号がついています。 また、i i (1 i M) (1\leq\ i\leq\ M) 本目の辺は頂点 Ui U_i から頂点 Vi V_i へ張られています。

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

输入格式

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

N N M M U1 U_1 V1 V_1 U2 U_2 V2 V_2 \vdots UM U_M VM V_M

输出格式

答えを出力せよ。

题目大意

【问题描述】

给定 点数为 nn ,边数为 mm 的有向图。

你需要计算:存在多少个顶点 vv ,可以从点 vv 出发永不停下?

【输入格式】

输入第一行包含 22 个整数 n,mn,m ,分别表示顶点数和边数。

接下来 mm 行,每行包含两个整数ai,bi(1ai,bin,aibi)ai,bi(1≤ai,bi≤n,ai≠bi) ,表示第 ii 条边从顶点 aiai 指向顶点 bibi

【输入格式】

在一行中输出一个整数,表示满足条件的顶点个数。

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

提示

制約

  • 1  N  2× 105 1\ \leq\ N\ \leq\ 2\times\ 10^5
  • 0  M  min(N(N1), 2× 105) 0\ \leq\ M\ \leq\ \min(N(N-1),\ 2\times\ 10^5)
  • 1  Ui,Vi N 1\ \leq\ U_i,V_i\leq\ N
  • Ui Vi U_i\neq\ V_i
  • i j i\neq\ j ならば (Ui,Vi) (Uj,Vj) (U_i,V_i)\neq\ (U_j,V_j)
  • 入力はすべて整数である。

Sample Explanation 1

頂点 2 2 を始点とした場合、頂点 2 2 \to 頂点 3 3 \to 頂点 4 4 \to 頂点 2 2 \to 頂点 3 3 \to \cdots と高橋君はいくらでも移動を繰り返す事ができます。 頂点 3 3 , 頂点 4 4 を始点とした場合も同様です。 頂点 1 1 からは最初に頂点 2 2 に移動して、以下同様にいくらでも行動を繰り返すことができます。 一方、頂点 5 5 からは一度も移動することができません。 よって、条件を満たすのは頂点 1 1 , 2 2 , 3 3 , 4 4 4 4 つであるので、 4 4 を出力します。

Sample Explanation 2

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