连通分量
Huglight
这个作者很懒,什么都没留下…
展开
-
洛谷P2863 The Cow Prom 强连通分量
题意:给一个无向图n个点m条边,求图的强连通分量中size>1的分量个数思路:用tarjan求图的强连通分量,在判断是否为强连通分量时求一下分量中节点个数,大于1则答案加1tarjan:基于DFS的求图的强连通分量的算法,cnt表示已经访问到的节点个数,即当前时间,dfn[x]表示x是第几个被访问到的节点,low[x]表示从x能到达的最早被访问的节点,若low[x]==dfn[x],则表...原创 2019-08-04 12:09:48 · 210 阅读 · 0 评论 -
POJ 3352 Road Construction 边双连通分量 缩点
题意:给一个无向图,求在图中最少加多少条边使得图变为边双连通图边双连通图:若一个无向图去掉任意一条边都不会改变这个图的连通性,即不存在桥,则称该图为边双连通图思路:对每个点求一次tarjan,low值相同的点在同一个边双连通分量里,将这些点缩在一个点里,求出缩点之后图中每个点的度数,需要加的边数等于(度数为1的点的数量+1)/2#include<iostream>#includ...原创 2019-08-04 16:52:39 · 168 阅读 · 0 评论 -
POJ 2186 Popular Cows 强连通分量 缩点
题意:给一个有向图,求从所有点都能够到达的这样的点的个数思路:先用tarjan求强连通分量,之后把同一分量的点缩成一个点,求出缩点后的点的出度,若出度为0的点的个数大于1,则由DAG性质得到不存在一个点能够从所有点到达,故只需要求出出度为0的那个抽象点中所包含点的个数即可#include<iostream>#include<cstdio>#include<cm...原创 2019-08-04 17:53:57 · 127 阅读 · 0 评论 -
POJ 1236 Network of Schools 强连通分量
题意:给一个有向图,需要实现两个任务:A:分配给一些点电脑,使得这些点能够运输到其他所有点,求出这些点个数的最小值B:为了使分配给任意节点电脑,都能运输到其他所有点,求出需要加的最少边数思路:任务A相当于求出入度为0的点的个数,任务B则需要思考,由于连通分量中每个点必须至少有一条入边一条出边,故为了使得所有点连通起来,需要将出度为0的点连一条边到入度为0的点。而需要连的边的最小值,只需要...原创 2019-08-18 17:09:59 · 74 阅读 · 0 评论 -
UVA 315 Network tarjan 割点
题意:给n个信号站,其中有些信号站与其他一些信号站连接,以使得所有信号站连通。其中有些信号站若失效了,则其他信号站就都失效了。求出这样的信号站的个数。思路:题目的意思就是求割点。割点就是去除这样的点就会使得图变得不连通。可以用tarjan算法来求:若根节点的孩子个数大于1,则根节点是割点;其他节点若其low值大于等于父亲dfn值,则该父亲是割点#include<iostream>...原创 2019-08-25 21:46:26 · 112 阅读 · 0 评论 -
LeetCode 1192. 查找集群内的「关键连接」Tarjan找桥
题意:给n个点构成的图,定义关键连接为去掉后图就变得不连通的边,求出所有这样的边思路:tarjan找桥裸题(居然还是困难难度)。当某个点i的low值大于其父亲节点dfn值时,表示从i往上推无法推到其父亲,即路径中不存在环,故其与父亲之间的边一定不能删去,否则图就变得不连通,换言之这条边就是桥。用tarjan处理过后找出所有符合条件的边即可。好久没碰Java,不知道是LeetCode的锅还是Ja...原创 2019-09-17 23:33:59 · 601 阅读 · 0 评论 -
HDU 3062 Party 2-SAT
题意:有n对夫妻,参加一个派对,其中夫妻2人只能有1人参加,有m个人存在矛盾(非夫妻),存在矛盾的人不能同时参加派对,求出是否能有n个人来参加派对思路:存在矛盾时,其中一人只能与另一人的夫妻同时参加,故两人分别与另一人的夫妻连边,用tarjan求强连通分量,判断夫妻是否在同一个连通分量中,若是则不存在n个人参加派对#include<iostream>#include<cst...原创 2019-09-21 12:09:45 · 117 阅读 · 0 评论