图论-连通分量
文章平均质量分 83
Flynn_curry
这个作者很懒,什么都没留下…
展开
-
hdu3639 Hawk-and-Chicken(Tarjan缩点+反图搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=3639题意:给你n个小孩和m个关系,关系中x, y代表x认为y受欢迎,欢迎度可传递,求最后最受欢迎的人有多少,并输出这些人。ps:这题数组好多啊,要不是看题解我都晕了。。思路也比较杂,容易晕。思路:首先用Tarjan找出强连通分量,将其缩点,这样把等价的点都缩为一个点,可以减少运算原创 2016-05-27 20:34:21 · 455 阅读 · 0 评论 -
poj1330 Nearest Common Ancestors(LCA离线算法)
http://poj.org/problem?id=1330题意:给你n个节点和n-1个关系,通过关系建起一棵树,然后给你两个节点,求他们的最小公共祖先。ps:这里的Tarjan离线算法貌似和前些日子做过的用Tarjan判断强连通不一样,难道Tarjan发明的算法都叫Tarjan算法么,那么他发明了应该不止一种的话。。。细思恐极思路:这题是树和并查集的完美结合,边信原创 2016-05-25 18:33:06 · 410 阅读 · 0 评论 -
hdu1269 迷宫城堡(tarjan入门)
http://acm.hdu.edu.cn/showproblem.php?pid=1269题意:给你n个点m个边,求给出的图是否为强连通。ps:虽然一开始就搜到了九野巨的模板,但始终看不怎么懂,推荐两个博客博客1,博客2。本以为这算法比较简单,但还是看了很长时间。不能小看任何一个算法啊,这都是前人的精华。思路:博客说的很详细,Tarjan就是基于dfs的算法。这里原创 2016-05-19 21:16:09 · 359 阅读 · 0 评论 -
hdu3072 Intelligence System(Tarjan缩点+最小生成树)
http://acm.hdu.edu.cn/showproblem.php?pid=3072题意:给你n个通信点,m个传输方法,传输方法中有花费,两个点互相传输可以看做0花费,求可以传输到每个点的最小花费。思路:将可以互通花费为0的点缩成一个点,变成DAG后就变成了求花费最小的生成树,遍历边贪心即可。这里应该复习下最小生成树算法思想,改天吧= =。这里注意题中说“kzc_tc原创 2016-05-20 22:14:35 · 366 阅读 · 0 评论 -
hdu1827 Summer Holiday(Tarjan缩点+贪心)
http://acm.hdu.edu.cn/showproblem.php?pid=1827题意:给你n个人m个关系,n个人分别有联系到他的最小花费,求联系到所有人的最小花费。思路:根据缩点把强连通都缩成节点变成有向无环图后,入度为0的点即为需要单独联系的人。至于花费,用贪心求最小花费即可。我们知道每个强连通分量已经被染色,那么找出入度为0的节点后,遍历所有节点,颜色相同就求其原创 2016-05-20 20:25:42 · 411 阅读 · 0 评论 -
hdu2767&&hdu3836 Proving Equivalences(Tarjan+缩点)
http://acm.hdu.edu.cn/showproblem.php?pid=2767题意:给你n个命题,m个推导,求增加多少条推导就能使命题两两等价。ps:这里终于看懂九野巨的模板了,刚开始就是边的输入方式不懂,怎么模拟都不对。后来一想,这尼玛是头插法啊,我就说怎么似曾相识。看来我数据结构水的一比啊。也好,让自己复习下数据结构。思路:命题转化为节点,推导转化原创 2016-05-19 21:22:26 · 395 阅读 · 0 评论 -
poj2186 Popular Cows(Tarjan+缩点水)
http://poj.org/problem?id=2186题意:给你n头牛m个想法,(u,v)代表牛u认为v很受欢迎,欢迎度可以传递,求所有牛欢迎的牛有几只。思路:直接求叶子节点出度为0的个数,如果为一个,则输出该连通分量中的元素个数。如果为多个,则输出0。因为缩点后变为有向无环图,所以至少有一个叶子节点。#include #include #include原创 2016-05-19 22:12:15 · 338 阅读 · 0 评论 -
hdu2874 Connections between cities(LCA离线+并查集)
http://acm.hdu.edu.cn/showproblem.php?pid=2874题意:给你一个无向森林图,求任意两点距离,若不能连通,输出Not..,若连通,输出距离。查询数据量大。思路:求距离思路和hdu2586一样,只不过这里转变为森林。这样要想判断不在一个树上,只能用并查集,把树上的点圈成一个集合,判断前再通过判断老大来确定输出方式。既然加了并查集就加了相关的原创 2016-05-29 09:10:46 · 366 阅读 · 0 评论 -
hdu2586 How far away ?&& poj1986 Distance Queries(LCA离线求最短距离)
http://acm.hdu.edu.cn/showproblem.php?pid=2586题意:给你一个带权值的无向图,求其中两点的最小距离。思路:这题貌似别的方法也行,这里还是为了练习LCA用这办法。不同于LCA求最小公共祖先的值,由于输入的是无向边,所以首先输入边时记得反向同步添加一条。接着我们可以把这个图看成一个以1为根的树,遍历LCA,当全部遍历完后,遍历需要查询的点原创 2016-05-28 20:56:37 · 326 阅读 · 0 评论 -
poj1470 Closest Common Ancestors(LCA离线优化)
http://poj.org/problem?id=1470题意:给你点和关系,还有m次询问,求某点是最小公共祖先的次数。思路:整体思路和poj1330相似,但是这题时间卡的相当紧,听别人说是多组询问。解决办法就是用数组存起来,LCA的时候每处理一个点就处理与该点有关的询问,这样遍历完也就处理完所有询问。保存次数我用的结构体,刚开始想复杂了。。还有输入输出格式也比较恶心,处理完原创 2016-05-26 19:34:57 · 574 阅读 · 0 评论