N个点,M条边的有向图,有多少对
(
x
,
y
)
(x,y)
(x,y)满足
x
x
x到
y
y
y可达,
y
y
y到
x
x
x也可达
思路:
只有
S
C
C
SCC
SCC中的点才满足两两可达的性质
用
K
o
s
a
r
a
j
u
Kosaraju
Kosaraju算法找出图中所有的
S
C
C
SCC
SCC,计算其中的顶点对数
设
s
i
z
e
[
i
]
size[i]
size[i]为第
i
i
i个
s
c
c
scc
scc中点的个数,则
a
n
s
+
=
s
i
z
e
[
i
]
∗
(
s
i
z
e
[
i
]
−
1
)
/
2
ans+=size[i]*(size[i]-1)/2
ans+=size[i]∗(size[i]−1)/2