SCC强连通分量
s_h_r
这个作者很懒,什么都没留下…
展开
-
HDU 5222 Exploration 并查集+强连通分量
题意:给你一个图 图上边有的无向有的有向 问你这个图是否有环 思路:对于所有相连的无向边 我们可以用并查集将他们分为一个集合 如果一条无向边的两个点属于同一集合 则说明有一个无向环 如果不存在无向环 就将所有无向边缩成一个点与有向边建图 如果这个图存在点数大于一的强连通分量 则存在一个有向环 我按照这个思路交上去之后wa了 然后发现一种特殊情况:两个节点间连着一条无向边和一条有向边 按照上面的思原创 2015-08-05 10:23:59 · 390 阅读 · 0 评论 -
HDU 3072 Intelligence System 贪心+强联通缩点
题意:给你一个有向图,让你选择其中的一些边,使得图联通,并且权值最小,如果几个点形成强联通分量,则里面的边权值为零。思路:首先强联通缩点,然后剩下的就是一个DAG了,如果这个DAG联通并且权值和最小,则除了起点每个点的入度一定为1,对于每一个点,我们只需要选择以它为终点的边中权值最小的那条即可。#include <cstdio> #include <cstring> #include <algori原创 2015-10-12 12:02:02 · 484 阅读 · 0 评论 -
HDU 3639 Hawk-and-Chicken 强联通缩点 + DFS
题意:n个小朋友传递手帕,如果A传递给B B传递给C 那么C会得到A和B的手帕,问你那些小朋友会得到最多种类的手帕(不算自己的手帕)。思路:对于在同一个强联通分量的小朋友,他们得到的手帕数量是相同的,都为所在联通分量点数减一,我们将其缩点,得到一个DAG,剩下的就是计算出度为零的小朋友会得到多少种手帕,正着找不好找,我们将所有边反向,从终点找所有能遍历到的点,更新最大值即可。#include <cs原创 2015-10-12 20:43:44 · 703 阅读 · 0 评论 -
POJ 2762 Going from u to v or from v to u? 强连通分量+DAG最长路
题意:给你一个有向图,问你是否对于任意两个点都有一条u->v或者v->u的路。思路:对于一个强联通分量,里面的点一定满足条件,我们可以把他们缩点,而对于不在同一联通分量的点,如果存在一条路径,使得这条路径能够遍历所有点,即符合题意。#include <cstdio> #include <cstring> #include <algorithm> using namespace std ;#defin原创 2015-10-12 10:49:47 · 349 阅读 · 0 评论 -
HDU 3861 The King’s Problem 强联通缩点 + 最小路径覆盖
题意:给你一个有向图,有一些规则: 1:对于两个点u v,如果存在u到v的路径并且存在v到u的路径,则他们属于同一个阵营 2:对于两个点u v,如果存在u到v的路径或者存在v到u的路径,则他们可以属于同一个阵营 3:每个点只能属于一个阵营 问你这个有向图最少能分为几个阵营思路:首先强联通缩点,对于第二条规则,其实也就是说找一条路径使得其覆盖尽量多的点,用二分图解决即可。这题不能用邻接矩阵,会原创 2015-10-12 17:56:36 · 377 阅读 · 0 评论