图论(连同分量,桥,割点)
文章平均质量分 61
鶸鶸
这个作者很懒,什么都没留下…
展开
-
POJ - 2186 Popular Cows(强连通分量+缩点)
题意:题目的意思是:现在有很多头牛,他们想知道这群牛中最受欢迎的(所有的牛都认为他受欢迎)牛有几头,其中 ,如果a认为b受欢迎,b认为c受欢迎,那么a就认为c受欢迎。思路:我们现在要求出的是 这样的一群牛,它们被其他所有牛都受欢迎,换句话说 就是是,所有的牛的直接或者间接的指向他,看到这里可能会有人想到,那我们直接看,如果这群牛中 ,有且只有一个出度为0,那么在一个图中,所有点肯定都指向它,如果这...原创 2017-05-17 11:01:24 · 307 阅读 · 0 评论 -
hihoCoder #1127 : 二分图三·二分图最小点覆盖和最大独立集
题意:啦啦啦啦思路:讲一下最小点覆盖和最大独立集把最小点覆盖是:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。最大独立集是:定义:选出一些顶点使得这些顶点两两不相邻,则这些点构成的集合称为独立集。找出一个包含顶点数最多的独立集称为最大独立集。好吧说人话把就是最小点覆盖就是二分图的最大匹配,最大独立集就是点数减去最小点覆盖上代码:#include <stdi...原创 2018-03-20 21:15:14 · 116 阅读 · 0 评论 -
hihoCoder #1122 : 二分图二•二分图最大匹配之匈牙利算法
题意:裸裸裸思路:我来讲一下匈牙利算法的思路把,就是对于一个点A来说,首先尝试他的匹配点B,如果这个B的匹配点已经被匹配到了点C,那么就让B的匹配点C去找找看,能不能找到另外一个匹配D,如果C和D匹配上了,那么B就空着了,那么就可以和A匹配上了,这样我们一直找一直找就能找到他的最大匹配上代码:#include <stdio.h>#include <string.h>#i...原创 2018-03-20 20:26:24 · 145 阅读 · 0 评论 -
hihoCoder #1121 : 二分图一•二分图判定
题意:裸。思路:如何判断一个图是不是二分图,那就是从当前点开始出发看这个点有没有染色,如果没有染色就对其染色,如果染过色了就判断当前点的颜色和我们要染的颜色是否相同代码:#include <stdio.h>#include <string.h>#include <algorithm>#include <vector>#include <...原创 2018-03-20 17:16:50 · 206 阅读 · 0 评论 -
hihoCoder #1175 : 拓扑排序·二(拓扑排序)
题意:中文题意欸。(我其实每次写博客之前都想贴个题目链接的,但是次次都忘记了>。<),就是给你n点m条边(DAG),他会在k个点上放病毒,之后病毒会按照他所连接的边上面传播病毒,问你最后当整个地图全部传染的时候,传播了多少个病毒。思路:在我没学拓扑排序之前想到的就是,深搜啊,深搜过去就好了,但是emmn和m都很大,所以看了一下题解,其实就是拓扑排序,从入度为0的点开始,把他所相连的边的...原创 2018-03-19 20:31:25 · 149 阅读 · 0 评论 -
hihoCoder #1184 : 连通性二·边的双连通分量
题意: 中文。。思路:无向图的双联同分量在我看来其实和有向图的强连通分量差不多啊。。#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>#include <stack>using namespace std;const int ...原创 2018-03-19 19:15:39 · 136 阅读 · 0 评论 -
hihoCoder #1183 : 连通性一·割边与割点 (裸割点和桥)
题意:求割点和桥。。就是裸的。。思路:Tarjan。。。因为是裸的吗,那我就写一下Tarjan如何求割点和桥吧,我们知道Tarjan有两个数组,low和dfn,其中low[u]表示的是u点可以到达的最早访问的点,dfn表示的访问的顺序,那么当low[v] >=dfn[u](u是父亲,v是儿子)那么就表示v点在不通过u点情况下不能到达比u点更早的点,那么就表明u点是一个割点,第二种情况,就是u...原创 2018-03-19 16:34:31 · 180 阅读 · 0 评论 -
hdu 4635 Strongly connected (强连通,数学)
题意:给你一个T,表示T组数据,之后给你n点,m条边,组成一个简单图,简单图的定义就是没有自环,没有重边,问你最多添加几条边让他还是一个简单图,且不是强连通分量。思路:我们想一下最极限的情况就是再加一条边整个图就变成了一个强连通分量,那么如果出现这种情况的话,肯定会分成两部分,一部分是这些点已经组成了一个强连通我们把他叫做集合A,那么另一个集合B就是还没有成为一个强连通,其中集合A有到集合B的点,...原创 2018-03-18 11:22:59 · 172 阅读 · 0 评论 -
hdu 5934 Bomb(强连通,水)
题意:给你n个炸弹的位置,爆炸范围,引爆所需要的花费,其中一个炸弹爆炸的话可以引爆他爆炸范围内的所有炸弹思路:在一个强连通分量里的炸弹都可以爆炸,把一个炸弹引爆后可以引爆的炸弹都建一条边,之后跑一边tarjan,之后缩成DAG,在跑tarjan的时候顺便更新缩过点的最小引爆值,之后找到DAG里入度为0的点加上就好了。对了对了坑点是要开long long代码:#include <stdio.h...原创 2018-03-18 11:05:47 · 124 阅读 · 0 评论 -
hdu 2767 Proving Equivalences(强连通裸题)
题意:给你n个点m条边,问你这个图需要添加几个边让他变成一个强连通思路:裸。。缩成DAG之后找到出入度为0的最大值#include <stdio.h>#include <algorithm>#include <string.h>#include <iostream>#include <stack>using namespace ...原创 2018-03-18 10:56:48 · 132 阅读 · 0 评论 -
poj 1236 Network of Schools(强连通分量,缩点)
题意:机房有n个计算机,然后每个计算机连着k个点,现在要传输消息,问1.你最多要传送消息给几个电脑,可以使机房的所有电脑都受到消息。2.添加几条边可以是所有电脑都可以相互连接思路:在一个强连通分量里的是所有电脑都可以相互收到消息,所以我们需要缩点,把原来的图缩成一个DAG,之后找入度为0的点,之后一个DAG需要添加几个边可以变成一个强连通分量呢,答案是max(入度为0的值,出度为0的值)。上代码:...原创 2018-03-18 10:52:26 · 148 阅读 · 0 评论 -
poj 1330 Nearest Common Ancestors (LCA 裸 tarjan)
题意:就是给你n个点,n-1条边的树,只有一组询问,问你(u,v)的最近公共祖先是谁思路:就是一个裸的LCA嘛,LCA现在只会写离线的tarjan,讲一下把,tarjan就是我们先记录下我们需要查询的值,之后跑一遍tarjan,在跑的时候,记录下当前点的父亲节点(并查集维护一下),如果我们的当前点在我们的记录数组中的话,我们就开始查询和当前点(u)有关系的所有节点(v),看看他有没有被访问过,如果...原创 2018-04-03 09:51:15 · 102 阅读 · 0 评论