AT_abc357_e [ABC357E] Reachability in Functional Graph
Description
[problemUrl]: https://atcoder.jp/contests/abc357/tasks/abc357_e
頂点に $ 1 $ から $ N $ の番号がついた $ N $ 頂点 $ N $ 辺の有向グラフがあります。
全ての頂点の出次数は $ 1 $ で、頂点 $ i $ から出ている辺は頂点 $ a_i $ へ伸びています。
頂点の組 $ (u,\ v) $ であって、頂点 $ u $ から頂点 $ v $ へ到達可能であるものの個数を求めてください。
ここで、頂点 $ u $ から頂点 $ v $ へ到達可能であるとは、ある長さ $ K+1 $ の頂点の列 $ w_0,\ w_1,\ \dots,\ w_K $ であって次の条件を全て満たすものが存在することをいいます。特に、$ u\ =\ v $ の時は常に到達可能です。
- $ w_0\ =\ u $
- $ w_K\ =\ v $
- $ 0\ \leq\ i\ \lt\ K $ を満たす全ての $ i $ について、頂点 $ w_i $ から頂点 $ w_{i+1} $ へ伸びる辺が存在する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ a_2 $ $ \dots $ $ a_N $
Output Format
頂点の組 $ (u,\ v) $ であって、頂点 $ u $ から頂点 $ v $ へ到達可能であるものの個数を出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ a_i\ \leq\ N $
- 入力される値は全て整数
### Sample Explanation 1
頂点 $ 1 $ から到達可能である頂点は頂点 $ 1,\ 2 $ です。 頂点 $ 2 $ から到達可能である頂点は頂点 $ 1,\ 2 $ です。 頂点 $ 3 $ から到達可能である頂点は頂点 $ 1,\ 2,\ 3 $ です。 頂点 $ 4 $ から到達可能である頂点は頂点 $ 4 $ のみです。 よって、頂点の組 $ (u,\ v) $ であって頂点 $ u $ から頂点 $ v $ へ到達可能であるものの個数は $ 8 $ 個です。 頂点 $ 4 $ から出ている辺は自己ループ、すなわち頂点 $ 4 $ 自身へ伸びている辺である点に注意してください。