图论
Fushicho_XF
对知识无比的向往,渴望打开新世界的大门~
展开
-
HDU-3836 Equivalent Sets (强连通缩点+贪心)
题目链接题意:给出一个n和一个m,n表示n个点(1~n),随后给出m行,每行2个数u和v,表示u是v的子集.(定义:若是u是v的子集,且v是u的子集,则u==v,需要注意的是子集关系可以传递)要求输出一个数值(最少还需要多少个子集关系,使得这n个数之间互等)题解:对于这样一个题目,很容易就可以把子集关系转换成有向图的一条有向边,那么题目就转换为求最少增加多少条有向边使得该图成为一个强连通图...原创 2018-07-18 16:05:14 · 421 阅读 · 0 评论 -
连通分量
连通分量:在无向图中,即为连通子图强连通分量:在有向图中,尽可能多的若干定点组成的子图中,这些顶点都是相互可达的, 这些顶点组成一个强连通分量连通解法:对于一个无向图的连通分量,从连通分量的任意一个顶点开始,进行DFS, 一定能遍历这个连通图的所有顶点,所以,整个图的连通分量数应该等于遍历整个图的次数Tarjan算法求强联通分量:定义:DFN【u】...原创 2018-07-17 22:46:18 · 2294 阅读 · 0 评论 -
有向图强连通分量的Tarjan算法
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两...转载 2018-07-18 14:30:50 · 191 阅读 · 0 评论 -
HDU - 3861 The King’s Problem (强连通缩点+最小路径覆盖)
题目链接题意:给出一个T,表示之后有T组样例,随后给出一个N和M,表示编号为1~N的点,随后M行,每行一个u和v表示一条有向边u->v,求这个图的最小路径覆盖(路径不可相交).题解:首先我们需要对这个图跑Tarjan的强连通缩点得到一个有向无环图,再对新的图求最小路径覆盖即可. (最小路径覆盖=图的点数-最大匹配数) 注意:该题求的是路径不可相...原创 2018-07-18 18:08:08 · 662 阅读 · 0 评论 -
HDU - 3594 Cactus (强连通缩点+STL)
题目链接题意:T组测试样例,每组样例给出一个N,表示(编号为0~N-1)的点有向图,随后给出这个有向图的边,每行是一个u和v,当u==0且v==0时边的输入结束.当每组两个条件时,输出YES,否则输出NO. 条件一:该图是一个强连通图; 条件二:该图中每条边都只属于一个环,即不能被多个环遍历到;题解:对于这个题目,我们首先需要使用强连通图的Tarja...原创 2018-07-19 00:29:16 · 468 阅读 · 0 评论 -
HDU - 1285 确定比赛名次 (拓扑排序-邻接矩阵)
题目链接题意:给出一个n表示(1~n人)和一个m,下面m行输入a,b,表示a的排名比b高. 保证一定且只有一种结果----输出满足m组要求的字典数最小的排名顺序题解:该题数据较小可试一手拓扑排序-邻接矩阵写法,不过要注意该题存在重边.(邻接表的话不用考虑重边的情况)代码如下:#include<iostream>#include<cstring...原创 2018-08-21 16:54:04 · 677 阅读 · 0 评论 -
HDU - 2647 Reward (拓扑排序-邻接表)
题目链接题意:给出一个n,表示有n个员工(1~n),再给出一个m,接下来m行输入一个a,b表示第a个人的工资比第b个人的工资高.老板给每个员工的最小工资为888,求老板的最小支出.题解:只要(反向边建图)进行拓扑排序,逐渐删掉入度为0的点即可算出老板的最小支出代码如下:#include<iostream>#include<cstring>#includ...原创 2018-08-21 16:57:40 · 541 阅读 · 0 评论 -
Codeforces 919D Substring (拓扑排序-队列优化+ DP)
题目链接题意:给出一个n和m,表示n个点m条边,再给出一个字符串s,s[i]表示第i个点的为小写字母c. 随后给出m行u,v表示单向边u->v. 求顺着任意路径走某个字母出现的次数的最大值,若存在环,则输出-1Eg:input:5 4abaca1 21 33 44 5output: 3 (即1->3->4->5...原创 2018-08-21 17:06:09 · 476 阅读 · 2 评论