连通分量
文章平均质量分 74
Grit_ICPC
Dielts
展开
-
POJ 1523 SPF(Tarjan 求解连通分量)
题目大意:给定的通信设备之间的关系,问有没有割点,并输出去掉割点后的连通分量的个数。思路:裸的Trajan求解割点,当某个点为割点的条件是low[v]>=dfn[u],或者是根节点且孩子的数目>=2。连通分量的个数=符合条件孩子数目+1.#include<map>#include<queue>#include<cmath>#include<iostream>#include<cstdio>原创 2016-02-19 19:51:49 · 458 阅读 · 0 评论 -
HDU 迷宫城堡 1269 (强连通图判定)
大意:问图中是不是所有两点都是任意可达的,i到j,同样j也要到达i.就是缩成一个点即可,所以只需要判断scc是不是1即可。不需要找麻烦看度数。#include#include#include#include#include#include#include#include#define LL int#define inf 0x3f3f3f3f#define eps原创 2016-05-09 18:14:08 · 874 阅读 · 0 评论 -
SDUT 2170 The Largest SCC(强连通+边的变换)
大意:给定一个有向图,然后又有Q个询问,每次询问为k代表将第k次加的边转化为双向边。问最后的最大的联通块内的节点个数。思路:在Q次询问的时候我们可以判断此边的端点是不是在一个联通分量中,是的话直接输出原来建图时找到的最大联通节点数,否则的话将当前Q[k].b的head值记录下来以便之后的删除改边,然后dfn[],和stk[]清除重新建图,再次求最大联通节点数即可。#inc原创 2016-06-01 17:21:01 · 384 阅读 · 0 评论 -
HDU 3394 Railway (点双联通+圈内判边数)
大意:给定M条边,问有有多少边是不在环上(或环内)的,有多少边是有冲突的(什么是冲突?即在一个环内有多条边将环分割开,即这样的边+上环上边的总数)思路:求桥的个数比较容易处理,直接(low[v]>dfn[u]即可)主要是怎么找冲突边,我们知道他们一定在一个联通分量内,所以我们将求出的 一组联通分量拿出来,进行遍历看是否所有的连的边在当前的栈中,在的话边数++,因为是无向图,所以最后要除原创 2016-05-09 14:09:09 · 763 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table(点双联通+二分图+染色)
大意:m个关系的人之间不能再圆桌上坐在相邻的位置上。并且人数为奇数,问至少踢出多少人能够开会。思路:因为人是围着圆桌坐,所以每人的度肯定是2,即度为1和0(单独一人)的都要被踢除。那么可以抽象为点的双联通。在出现桥的时候(即度数为1)将该联通块的人都统计下来,判断是不是奇环(二分染色)(PS:说明为啥不能直接统计个数判断奇环呢?既然是点的双联通那么一定是环,是不是能够直接判断当前的人数原创 2016-05-07 21:15:10 · 760 阅读 · 0 评论 -
SDUT 2604 Thrall’s Dream (单连通的判断)
大意:给定一些有向图间的关系问任意两点是不是可达的。思路:Tarjan后直接看入度和出度为0的数量关系,如果大于1则肯定是不可能,相连通的。#include#include#include#include#include#include#include#include#define LL int#define inf 0x3f3f3f3f#define原创 2016-05-06 17:59:08 · 806 阅读 · 0 评论 -
POJ 3352 Road Construction&& POJ 3177 Redundant Paths 双联通分量
大意:给定n点,和m条边的关系图中的一些边随时可能施工导致不能够通过,所以至少加多少条边才能够使得途中任意两条边联通?思路:很明显只要图中的任意两点都是两条边来链接即可。那么我们可以先缩点构建新图,然后统计出度为1的点的个数ans,那么需要加的边数就是(ans+1)/2条;#include#include#include#include#include#inclu原创 2016-05-06 14:53:53 · 626 阅读 · 0 评论 -
SDUT 2604 Thrall’s Dream (bfs||单连通)
大意:给定一些点间的关系,问任意两点都是联通的(有向图) 思路:1、bfs搜索搜n次,每次从一个节点开始,然后遍历于此节点关联的,然后再遍历其孙子、重孙节点等于当前节点做标记。之后暴力找没有联通的就是任意两点不能联通。 2、图论书上的单连通模板。 #include#include#include#include#include#include#原创 2016-05-01 20:50:25 · 547 阅读 · 0 评论 -
HDU 3072 Intelligence System (强连通+(贪心||树形图))
大意:在一个联通分量里面的边权值忽略不计,求缩点后的所有联通分量链接在一起的最小权值和。思路:必然先缩点,最后得到的图为DAG,然后就是统计权值,对于那么到达当前的缩点可能有多个入度,所以选择最小的即可。最后避开起始点的dis[star] == inf.累加即可。#include#include#include#include#include#include#i原创 2016-05-11 10:49:25 · 2827 阅读 · 0 评论 -
POJ2186 Popular Cows (强连通缩点)
大意:给定n头牛,牛之间为有向的羡慕关系并且关系可以传递,问最后有多少个牛被所有的牛羡慕。思路:羡慕的关系链或者环都可以进行缩点,使得图抽象DAG(有向无环图)。每个节点就是一个联通分量,我们统计每个联通分量的出度,当出度为0的连通分量数目大于1时就表明不是所以牛都羡慕其中的一头牛,结果为0。否则,我们直接找到最后缩点后的图中有多少个点就是最终的结果。#in原创 2016-05-04 18:02:54 · 413 阅读 · 0 评论 -
HDU 2767 Proving Equivalences (强联通)
大意:至少加几条边让图联通。思路:让图联通的话肯定会与度数有关。所以找到入出度最大的补上即可。#include#include#includeusing namespace std;const int VM=21010;const int EM=51010;const int INF=0x3f3f3f3f;struct node{ int to ,原创 2016-05-10 18:04:25 · 750 阅读 · 0 评论 -
HDU 4738 Caocao's Bridges(双联通分量+并查集)
大意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥,使得这n座岛不连通,求最少要派多少人去。思路:我们就是要缩点后直接求桥上人的最少数量。(PS:1、注意图如果不联通直接输出0。2、如果图中的桥上人为0,个那么要让一个人去。3、重边的问题。这里可以忽略)#include#include#include#include#i原创 2016-05-06 21:14:14 · 773 阅读 · 0 评论