二分图定义:顾名思义就是将整个图分为两个部分的图。这里我们将点分成两个集合,A,B并且规定,任意同一个集合里的点没有直接相连的边,也就是说所有的点都是从A集合里的一个点连向B集合里的一个点。这样的图叫做二分图。判定:那么如何判定一个图是不是二分图呢?先给出定理:当一个图为二分图是,当且仅当这个图中没有奇环(点的个数为奇数的环).对于这个定理的证明,不详解释了。(其实是因为我不懂....)但我们可以
转载
2024-02-22 13:51:37
36阅读
dfs版: [cpp] view plain copy print? bool dfs(int u) { for(int i = head[u]; ~i; i = e[i].next) { int v = e[i].v; if(!vis[v]) { vis[v] = true; if(my[v] =
原创
2021-04-26 00:34:16
411阅读
【题目链接】 http://poj.org/problem?id=3057 【题目大意】 给出一个迷宫,D表示门,.表示人,X表示不可通行, 每个门每时间单位只允许一个人通过, 每个人移动一格的为一时间单位的时间, 问所有人逃离这个迷宫的最小时间 【题解】 我们首先对于每个门进行搜索,求出其到每个人
转载
2017-02-09 13:49:00
45阅读
2评论
之前分析了好多排序算法,可难理解了呢!!(泣不成声)
这次我要把二分查找总结一下,这个算法不算难度特别大,欢迎大家参考借鉴
我不喜欢太官方的定义,太晦涩的语言,让人看了就头晕。我希望加入我自己的理解,能帮助大家更好的理解算法的原理
同时也欢迎大家批评指正
二分查找:
我们手里有一个长度为n的正序数列,当我们想查找一个数 x是否在这个数列当中的时候
1 取数列正中间的数mid,
uva 11396 Claw Decomposition A claw is defined as a pointed curved nail on the end of each toe in birds, some reptiles, ast, you may under
原创
2023-07-27 00:05:36
48阅读
题目大意:给你一张map,map上面的”G”表示鬼,“H“表示人,“.“表示空地,”#”表示障碍 地的时间,所以要求吓到所有人且返回原地的时间达到最小解题思路:人和鬼分开,成两
原创
2023-04-07 13:33:19
51阅读
基本概念 图分为有向图和无向图 顶点集合V 边的集合E,连接俩点u和v的e=(u,v)表示,所以图 G=(V,E); 俩个顶点相连表示俩个顶点相邻,相邻顶点的序列称为路径,起点和终点重合的路径叫做圈。随意俩点之间都有路径连接的图称为连通图。顶点连接边的个数称为度。 没有圈的连通图叫做树,没有圈的非连
转载
2016-02-22 19:52:00
171阅读
2评论
#介绍 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。(取自于百度百科) 上面的一段话苦涩难懂 ...
转载
2021-08-16 16:15:00
300阅读
2评论
一般来说,我学习完每一个知识点都会写两篇博客,第一篇是基础知识和模板题,主要是为了整理思路加深理解;第二篇主要就是拿来记录做到的好题了。 Two Trees 大部分题解都用的欧拉回路的做法,但问题在于欧拉回路我用的不熟,所以它的方法我也没有怎么理解到;相较而言,二分图的做法我倒是很快就明白了,虽然中 ...
转载
2021-08-05 13:56:00
270阅读
2评论
or...
原创
2021-08-11 14:31:46
187阅读
将所有的点分为两个集合,使得所有的边都在集合之间,即为二分图 一定不含奇数环 ##染色法判定二分图 模板题 【染色法判定二分图】 思路:dfs(j, 3-c)可以将j点染成与u点不一样的颜色 for(n个点){ 将未染色的点进行dfs,默认染成1或2 if(当前点不能被染成不同于u点的颜色或当前点颜 ...
转载
2021-09-29 21:01:00
145阅读
2评论
二分图基础知识 定义 二分图又称作二部图,是图论中的一种特殊模型。 设$G$=(\(V\),\(E\))是一个无向图,如果顶点$V$可分割为两个互不相交的子集(\(A\),\(B\)),并且图中的每条边(\(i\),\(j\))所关联的两个顶点$i$和$j$分别属于这两个不同的顶点集(\(i\in ...
转载
2021-08-16 15:54:00
242阅读
2评论
链接:https://ac.nowcoder.com/acm/problem/16591来源:牛客网题目描述S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关...
原创
2021-07-09 14:09:03
290阅读
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3912思路:二分覆盖直径,然后判断是否有冲突(即距离小于等于直径的不能使用同一频率),这样可以用二分图染色的办法判断,看是否能将整个图都染上色。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 1444 9 #define inf 1que;32 for(int i=1;ilimit-eps)cont...
转载
2013-09-13 17:26:00
225阅读
2评论
题意: 现在iSea和他朋友一起来到一个迷宫中...每次他们会从一个集合点到达另一个集合点(集
原创
2022-08-12 13:27:32
86阅读
转载
2013-10-05 04:51:00
137阅读
2评论
最大匹配数=最小点覆盖最小路径覆盖 = 顶点数 – 最大匹配
原创
2022-08-04 16:35:53
64阅读
点覆盖集:即一个点集,使得所有边至少有一个端点在集合里。或者说是“点” 覆盖了所有“边”。最小 点覆盖集:最小 点权覆盖集:流。
原创
2022-12-07 00:12:17
52阅读
专题链接最大匹配(最小覆盖数)最小路径覆盖最大独立数带权最优匹配
转载
2014-05-02 00:24:00
153阅读
2评论
Matrix67在博客里这样写的。哈哈,自己稍微有点自信,Matrix67也是研究了几个小时的。 “研究了几个小时,终于明白了。说穿了,就是你从二分图中找出一条路径来,让路径的起点和终点都是还没有匹配过的点,并且路径经过的连线是一条没被匹配、一条已经匹配过,再下一条又没匹配这样交替地出现。找到这样的路径后,显然路径里没被匹配的连线比已经匹配了的连线多一条,于是修改匹配图,把路径里所有匹配过的连线去掉匹配关系,把没有匹配的连线变成匹配的,这样匹配数就比原来多1个。不断执行上述操作,直到找不到这样的路径为止。” 然后找了个代码。然后发现有个地方与自己理解的dfs找增广路有点不同,就是与自己模拟所.
转载
2013-09-13 21:36:00
113阅读
2评论