强连通分量
eIectron
优美的代码是成功AC的第一步。看着那么多博客不再更新,这就是我几年后的状态吗?要是走了就再也不回来了。
展开
-
POJ 2186 Popular Cows(强连通分量模板题)
我是用的挑战上的强联通分量的模版,这个模版是两遍dfs即可。复杂度O(V+E)。我们用强联通模版得到强联通分量的个数为k,那么最大的标记就是k-1,我们随便找一个k-1的点跑一遍dfs看是否可以到达V个点,如果是,那么就输出标记为k-1的点的个数。如果不是,那么就输出0(有可能有的牛就不崇拜别人,那就直接断开了)。代码如下:#include#include#include#inc原创 2017-05-26 18:27:45 · 417 阅读 · 0 评论 -
BZOJ 1179: [Apio2009]Atm(tarjan缩点+spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=1179首先分析数据大小,n,m由于他是个有向图,而且有可能存在环,那么很容易想到缩点。而且题目中也说明一个环是很具有意义的,可以走完这里面的atm拿到money并且出来到达其他环。所以我们的目标就是把环与环之间连起来然后跑最短路,找出一个能得到最多money的路径。代码如下:#incl原创 2017-07-15 08:38:14 · 288 阅读 · 0 评论 -
Code[vs] 1506传话(tarjan缩点)
http://codevs.cn/problem/1506/这道题就是问每个点是否存在于一个环里面,所以用tarjan跑一遍,然后检查他所在的强联通分量里面是否存在多于一个的变量数目。若变量数目大于1,输出T,否则输出F代码如下:#includeusing namespace std;int n, m;vector G[1005], com[1005];int dfn[10原创 2017-07-15 10:37:20 · 293 阅读 · 0 评论 -
HDU 5934 Bomb(强连通分量缩点)
http://acm.hdu.edu.cn/showproblem.php?pid=5934题意:给出一些炸弹,引爆每个炸弹有各自的花费ci,他们的坐标是爆炸半径都给出,如果该炸弹爆炸炸到某个炸弹的圆心,则另一个炸弹也会被引爆。问引爆所有炸弹的最小花费是多少。解法:很容易发现,这个爆炸是有向的,就像样例里面有的炸弹可以互相引爆,但是有的炸弹是单向引爆别的炸弹的。这里很容易想到强联通缩点,把原创 2017-07-21 14:52:39 · 265 阅读 · 0 评论 -
POJ 2117 Electricity(割点应用的模板题)
http://poj.org/problem?id=2117题目大意,就是问删除某个点,然后求出最多的联通块数目由于第一次写割点所以根本不会,看着别人代码理解了好久。最后发现,3 0这种情况应该输出2的,必须要删点。就因为这个WA了好多发。代码如下:#include#include#include#includeusing namespace std;const int原创 2017-07-20 09:22:52 · 242 阅读 · 0 评论 -
2017年多校赛第九场 1005 FFF at Valentine(缩点+拓扑排序)
其实缩点很容易想到,就是不怎么会用拓扑排序所以一直卡着判断这个地方。代码如下:#include #include #include #include #include #include #includeusing namespace std; const int N = 1005; // 点的最大个数 stack sta;原创 2017-08-23 15:57:51 · 301 阅读 · 0 评论 -
POJ 1236 Network of Schools(强联通缩点)
题意:给定一些学校的网络,有向的,u可以到v,但是v不一定可以到u,按照实际情况这些学校能互相联系应该是个连通图(我猜的)。现在问最少要给多少个学校发出消息才能使得全部学校都能收到信息。还问了如果想要这些学校能互相联系,要加上多少条有向边。解法:第一问就是裸的tarjan算法,直接缩点找一找入度为0的强连通分量即可。第二问不是很明白,别人给出的结论就是直接取max(入度为0的强联通分量数目原创 2017-09-11 15:52:53 · 172 阅读 · 0 评论