【bzoj1051】 [HAOI2006]受欢迎的牛

2014年1月8日4,3864

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的点若只有一个则输出其代表强连通分量的大小,否则无解。

 

  • X!!2016年2月2日 下午4:00 回复

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

    #1  
    • hzwer2016年2月4日 下午7:04 回复
      admin

      强连通分量为什么会有包含关系。。。是极大连通子图啊0.0

      #11
  • qgz2016年7月29日 上午10:19 回复

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

    #2  
    • hzwer2016年7月29日 下午2:27 回复
      admin

      你可以阅读一下https://www.byvoid.com/blog/scc-tarjan

      #21