随笔分类 -  图论--二分图

摘要:hdu1150最小顶点覆盖hdu149850 years, 50 colors最小顶点覆盖 +枚举 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include1... 阅读全文
posted @ 2014-05-08 12:41 _雨 阅读(267) 评论(0) 推荐(0) 编辑
摘要:hdu1179Ollivanders: Makers of Fine Wands since 382 BC.裸最大匹配 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9... 阅读全文
posted @ 2014-05-08 12:34 _雨 阅读(287) 评论(0) 推荐(0) 编辑
摘要:专题链接最大匹配(最小覆盖数)最小路径覆盖最大独立数带权最优匹配 阅读全文
posted @ 2014-05-02 00:24 _雨 阅读(153) 评论(0) 推荐(0) 编辑
摘要:最近遇到二分图匹配的题目,发现不怎么会,重新把之前的题目看了看,做下总结吧。http://poj.org/problem?id=1469 纯纯的二分图的最大匹配 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 vectorpa[410];11 int vis[410],mat[410];12 int find(int u)13 {14 int i;15 for(i = 0 ; i >t;32 ... 阅读全文
posted @ 2014-02-19 16:52 _雨 阅读(412) 评论(0) 推荐(0) 编辑
摘要:1109二分图的模板题 不过这题题意 我纠结了好久 不知道是不是我对二分图不熟悉的原因这题就是说 有n+m个人参加会议 要在这n+m中进行通话 求最少的连接数 就是每个人都得被连接上 这样求最大匹配就是了 再用总结点数减匹配的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[2010]; 9 int n,m,k,vis[2010],link[2010];10 int find(int u)11 {12 int i;13 for... 阅读全文
posted @ 2013-10-06 23:00 _雨 阅读(239) 评论(0) 推荐(0) 编辑
摘要:1106结点染色 当前结点染为黑 朋友染为白 依次染下去这题是为二分图打基础吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[110]; 9 int vis[110],num;10 void dfs(int u,int c)11 {12 int i;13 vis[u] = c;14 if(c==1)15 num++;16 for(i = 0 ; i < (int)ed[u].size() ; i++)... 阅读全文
posted @ 2013-10-04 15:03 _雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4635tarjan缩点 统计缩点后每个结点的出度入度 将那个包含原来点数最少的 且出度或者入度为0的大节点看作一个整体内部连边n*(n-1)个 连全部的; 其它的点为一整体连全部的 再两者连一同向的边 保证它的出度或者入度依旧为0的情况下任意连 最后减去原来的边M 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define M 100010... 阅读全文
posted @ 2013-08-02 10:46 _雨 阅读(293) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4619二分图匹配 最小点覆盖 = 最大匹配 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int map[1010][1010]; 7 struct node 8 { 9 int x,y;10 }p[1010],q[1010];11 int n,m,vis[1010],link[1010];12 int judge(int i,int j)13 {14 if(p[i].x>n>>m)42 {4... 阅读全文
posted @ 2013-07-29 14:43 _雨 阅读(183) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2942代码敲的迷迷糊糊的 照把书上的给搬上来的给篇讲的不错的解题报告 各种定义都有 http://blog.csdn.net/lyy289065406/article/details/6756821做这题之前 一定要把相关定义搞清楚 割点 双连通分量 二分图 奇圈View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<stdlib.h&g 阅读全文
posted @ 2013-04-16 20:34 _雨 阅读(193) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3020最小路径覆盖,拆点,总结点数 = 匹配数*2+未匹配节点,所以所用天线数就等于匹配数+未匹配数=总结点-匹配数。由于拆点后,多加了边,匹配数变成了原来的2倍,有向图-》无向图,匹配数增加的是一样的。View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 int link[500],map[500][500],ma[50 阅读全文
posted @ 2013-01-18 21:10 _雨 阅读(171) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1422题意:一个镇上有很多街道,很多十字路口,无循环,把伞兵放在各个十字路口上,使之能把所有的街道都走过,求最小的伞兵数。最小路径覆盖=节点数-最大匹配。模板题View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int map[200][200],link[200],vis[200]; 6 int find(int x,int n) 7 { 8 int i,j; 9 阅读全文
posted @ 2013-01-18 18:49 _雨 阅读(192) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2226模板抄错,结果错了一下午。将连续横行上的*和连续纵桁上点分别看做两个点集,连接两集合中点的边就是图中的点。即求最小顶点覆盖最多的边。最小点覆盖=最大匹配。有篇图片的讲解,挺好,很形象。http://ip96cns.blog.163.com/blog/static/170095192201117465473/View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 in 阅读全文
posted @ 2013-01-18 16:52 _雨 阅读(220) 评论(0) 推荐(0) 编辑
摘要:【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹. 阅读全文
posted @ 2012-12-11 17:12 _雨 阅读(388) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示