「BZOJ1051」[HAOI2006] 受欢迎的牛

2014年1月8日5,1034

Description

每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。

Input

第一行两个数N,M。 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可能出现多个A,B)

Output

一个数,即有多少头牛被所有的牛认为是受欢迎的。

Sample Input

3 3
1 2
2 1
2 3

Sample Output

1「数据范围」
10%的数据N<=20, M<=50
30%的数据N<=1000,M<=20000
70%的数据N<=5000,M<=50000
100%的数据N<=10000,M<=50000

代码

tarjan强连通分量求缩点重构图,出度为0的点若只有一个则输出其代表强连通分量的大小,否则无解。

 

说点什么

提醒
avatar
qgz
qgz

黄学长,我有个问题求教:您打问号的那个地方,第27行,为什么要用dfn[e .to]而不用low[e .to]……

X!!
X!!

黄学长,有一点不是很明白,这道题缩点的时候用的是++hav[scc],这样假如出现了一个强联通分量被包含在另一个里面,hav的值不是会错?