tarjan
zyz_3_14159
这个作者很懒,什么都没留下…
展开
-
LightOJ-1034-tarjan
题目大意:有n个灯,需要把他们都点亮,接下来有m行u,v表示u点亮后,v也随之被点亮,问最少需要点亮几盏灯; 题目解析:tarjan先把所有强连通分量求出来,map[i]表示第i个点在第几个强连通分量中,然后我们需要dfs每个强连通分量,如果发现map[u]!=map[v],也就是说两个强连通分量之间有一条边,那么令一边的就可以舍去,因为我们总可以在map[u]所在的分量中到达另一个分量的任意一原创 2016-10-21 16:24:14 · 260 阅读 · 0 评论 -
LightOJ1026-Critical Links-tarjan
题目大意:给你一张无向图,让你求桥的个数有多少个,桥就是一张连通图如果把某条边去掉,这张图就变成了两张; 题目解析:用tarjan算法,其中dfn[i]表示dfs时到第i个点的时候的时间标号(从0开始),low[i]表示第i个点能追溯到dfn最小的那个点,那么在tarjan枚举的时候,只要low[v]>dfs[u]就是桥了,因为第v个点没有路能够通往u上面的图; AC代码: #include原创 2016-10-15 14:30:53 · 216 阅读 · 0 评论 -
LightOJ-1063-tarjan
题目大意:求无向图中的割点数目; 题目解析:用tarjan dfs的时候,如果枚举到某一边(u,v)其中low[v]>=dfn[u],就暂时设置is[u]=1最后枚举完的时候要判断这个点是否为根节点,如果是根节点并且儿子数目 AC代码: #include #include #include #include #include #include using namesp原创 2016-11-08 20:21:47 · 172 阅读 · 0 评论