图论
文章平均质量分 80
ACMiao_
Passion、Love、Action
展开
-
HDU 3405 World Islands(最小生成树)
水题。少一个点的最小生成树,数据很小,n 代码:// Header.#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std原创 2015-09-09 10:30:12 · 475 阅读 · 0 评论 -
HDU 1811 Rank of Tetris (并查集+拓扑排序)
题意:给出不同人的一些相对大小信息,问能否得到一个确定的rank。思路:很显然的拓扑排序,只不过这里有等于的情况。由于题意已经说明等于的情况的话,比较两人的人品值也即编号,所以等于的情况是确定的,只需用并查集处理一下。那么剩下的就是拓扑排序了。我们用一个cnt值记录已排序的人数,最后与总人数n比较。在输入过程中,一旦出现相等的话,显然要进行合并,此时cnt++,因为此时一个人相当于两个人。进行原创 2015-11-16 17:10:17 · 422 阅读 · 0 评论 -
HDU 2767 Proving Equivalences(强连通缩点)
题意:给出一个有向图,不一定连通,问至少加多少有向边可以使其变成连通的。思路:先跑一遍Tarjan并进行缩点。缩完点后,得到一个DAG,设入度为0的点数位inCnt,出度为0的点数为outCnt,则答案为max(inCnt, outCnt)。注意如果跑完一遍图本身就是强连通的,则直接输出0。下面证明为什么答案是max(inCnt, outCnt)。先给出一个有向图。假如这个原创 2015-11-22 00:22:51 · 479 阅读 · 0 评论 -
POJ 1236 Network of Schools(强连通分量缩点)
题意:n个学校有向图,得到软件的学校可以根据路径发放给其他学校。问1:至少给几个学校发放。问2:给任意一个学校发放,至少添几条边可发放至所有学校。显然要用Tarjan先找到所有的强连通分量,然后缩点建树。建树之后对每个缩点记其入度出度。显然,对于问题1,只要向入度为0的点发放软件就可满足条件。那么问题2呢?试想对于所有的子树,每棵子树有根节点和叶节点,要得到强连通分量,显然需要将这些根节点原创 2015-09-10 21:27:05 · 470 阅读 · 0 评论 -
HDU 2460 Network(Tarjan求解桥+LCA)
题意:求出桥数,然后有Q次填边,每次填边后输出剩余的桥数。一开始想的是先求解所有的桥,然后双连通缩点建树,再添边求解桥。。感觉很麻烦。。后来发现不用这么麻烦,Tarjan搜索一次后,记录到了所有的dfn值和fa值,即所有点的访问次序以及父亲值,那么借用LCA的思想,图中的边无非是树边与回退边,对每对Q填边操作的u和v,进行一次LCA,搜索树边与回退边。对树边的话,u和v的dfn值一大一小,对大原创 2015-09-10 20:05:05 · 536 阅读 · 0 评论 -
POJ 1966 Cable TV Network(顶点连通度)
题意:给一个无向图,求至少去掉多少个点可以将其变成不连通的。一道求无向图点割集的入门题。先看一下点割集和顶点连通度的定义:点连通度:一个具有N个点的图G中,在去掉任意k-1个顶点后(1独立轨:A,B是图G(有向无向均可)的两个顶点,我们称为从A到B的两两无公共内顶点的轨为独立轨,其最大条数记作P(A,B)。设A和B是无向连通图G两个不相邻的顶点,那么最少要删除多少个点可以使A、原创 2015-09-09 22:39:09 · 559 阅读 · 0 评论 -
POJ 1523 无向图求割点
无向图求割点的问题,仍然是用到Tarjan算法进行深搜,深搜过程中不断更新每个节点的dfn值和low值,对一个父亲节点u和其子节点v,每次搜索完其一个子节点,更新其low值,即节点u能通过一条其后代的组成的路径和回退边所能到达的最小的dfn值。如果可以到达的dfn值比u小,说明u可以通过其后代组成的路径和回退边到达u的祖先节点,即说明删除u之后,u的后代节点仍然可以到达u的祖先节点,即说明是连通的原创 2015-09-05 11:20:46 · 596 阅读 · 0 评论 -
POJ 3352 双连通缩点以及求桥和边双连通分量
传送门:http://poj.org/problem?id=3352在用Tarjan算法求解连通分量时,通过dfs过程记录每个节点的访问次序,记作dfsnum,存入dfn数组,以及记录一个点可以通过边和回退边可以达到的最小的dfsnum,存入low数组。那么显然,如果对于一个节点u和它的孩子节点v,v可以通过回退边达到比dfn[u]小的dfsnum,即说明即使删除边(u,v),v仍然可以到原创 2015-09-05 00:34:08 · 566 阅读 · 0 评论 -
UVa 11747 Heavy Cycle Edges(最小生成树)
题意:给一个图,按照找最小生成树的方法,找到环并输出环中其中最大的边。思路:一样是用Kruskal算法,只不过加边的时候,判断边上两点在不在一个连通集合中,如果在,则说明加上边得到了环,输出这条边。#include #include #include #include #include #include #include #include #include #includ原创 2015-11-23 17:08:35 · 421 阅读 · 0 评论