
连通图
Let_life_stop
和强者对战才是提升自己最快的方法。
展开
-
tarjan算法(求强连通子块,缩点)
tarjan算法求图中的强连通子图的个数。#include<iostream>#include<stack>#include<queue>#include<string>#include<cstring>#include<algorithm>#include<cmath># define ma原创 2018-07-01 17:34:39 · 304 阅读 · 0 评论 -
F - Warm up HDU - 4612 tarjan缩点 + 树的直径 + 对tajan的再次理解
题目链接:https://vjudge.net/contest/67418#problem/F题目大意:给你一个图,让你加一条边,使得原图中的桥尽可能的小。(谢谢梁学长的帮忙)我对重边,tarjan算法中的各个数组的作用,以及需要哪些数组,还有一些不可取的地方。重边:原来一直以为无向图没有重边,,,在进行无向图的缩点的时候,假设 u- >已经走过了,那么 在不加重边的情况下,v...原创 2018-11-26 17:31:25 · 192 阅读 · 0 评论 -
King's Quest POJ - 1904 匈牙利算法的思想+tarjan缩点+染色
题目链接:https://cn.vjudge.net/problem/POJ-1904自己一开始的想法,打算用匈牙利算法实现,找二分图的最大匹配。但是打了打发现,不太好实现。原因如下:匈牙利算法是不停的找增广路。如果这个题用匈牙利算法实现的时候,就是这个地方:bool Find(int t){ for(int i=1; i<=m; i++) { i...原创 2018-11-29 17:50:13 · 208 阅读 · 0 评论 -
树的直径(两个bfs)
题目链接:https://cn.vjudge.net/problem/POJ-2631树的直径:树中的最长链具体思路:随便找一个点bfs,然后找到最长的链,然后再以找到的点作为起点进行bfs,然后找到的最长的链就是树的直径。AC代码:#include<iostream>#include<stack>#include<iomanip>#in...原创 2018-11-25 20:35:20 · 376 阅读 · 0 评论 -
Network POJ - 3694 (LCA+tarjan+桥)
题目链接:https://vjudge.net/problem/POJ-3694具体思路:首先可以通过缩点的方式将整个图变成一个树,并且树的每条边是桥,但是我们可以利用dfn数组将整个图变成树,这样就可以省去缩点的过程了,同时lca的作用。假设有如下情况。f->a f->b,这是缩点之后的,如果在a,b之间加一条边的话,从a->a和b的最近公共祖先节点-> ...原创 2018-11-23 17:46:38 · 279 阅读 · 0 评论 -
连通图的桥(对桥和割点的理解)
题目链接:https://cn.vjudge.net/problem/UVA-796顺便总结一下,对于连通图的桥和割点。首先,从tarjan的角度来说,dfn数组代表的是当前节点的编号,也就是时间戳,low数组代表的是当前节点能够到达的最早的时间戳(一定要注意是时间戳)。打个比方,1->2->3,low【3】=1,。然后具体tarjan的过程,我理解的就是,就是不停的dfs,然...原创 2018-11-21 19:50:48 · 3434 阅读 · 4 评论 -
无向图判断割点
题目链接:https://vjudge.net/contest/67418#problem/B具体思路:对根节点,也就是起点,单独判断左右子树的个数,如果大于等于二的话,那么就是割点。对于与其他点,就判断它最早能达到的点,如果能达到的点大于它的时间割,那么它就是割点。AC代码:#include<iostream>#include<string>#inclu...原创 2018-10-20 16:21:21 · 980 阅读 · 0 评论 -
连通图 求至少有给几个点信息才能传遍全图,至少添加几条边才能使全图联通
第一个,染色后求入度为0的联通块。第二个,染色后求入度为0的联通块和出度为0的联通块的最大值。//入度和出度是对联通块说的。AC代码:#include<iostream>#include<string>#include<iomanip>#include<cstring>#include<cmath>#include...原创 2018-10-19 21:51:14 · 806 阅读 · 0 评论 -
割点板子
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N=1e5+5,M=1e5+5,INF=1e9+5;int n=0,m,u,v;struct edge{ int v,...原创 2018-08-20 21:31:02 · 211 阅读 · 0 评论 -
强连通图(最多加入几条边使得图仍为非强连通图)G - Strongly connected HDU - 4635
题目链接:https://cn.vjudge.net/contest/67418#problem/G具体思路:首先用tarjan缩点,这个时候就会有很多个缩点,然后再选取一个含有点数最少,并且当前这个点的出度和入度至少有一个为0,这个原因后面解释。然后选出最少的点 t1 后,当前的图就可以看成两个“缩点”了,除了选出来的t1点,其他点可以形成一个联通块,然后这两个缩点之间可以连着单向边,这样的...原创 2018-11-28 16:07:20 · 628 阅读 · 0 评论