POJ3715【二分匹配-增广】
题意:
N个人,有两种人,M对亲密关系,问最少删除几个人达到没有亲密关系。
思路:
类似HDU1281;
处理可用删除这个点以后找增广,如果找的到增广则无影响,找不到增广则有影响。
错误就是二分图,我要删的点有两种,两组点都有可能删除,*单方面删除了一种*。
错误在了无意识偏爱了一张图,其实二分图,两张图非常独立,地位平等且重要!
//#include<bits/stdc++.h>
//using namespace::std;
//typedef pair<int,int> PII;
#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std; const int N=2e2+10; bool ma[N][N];
int cx[N],cy[N],n,m;
bool vis[N],col[N],deleted[N]; bool FindPateX(int u)
{
if(deleted[u]) return false;
for(int i=0;i<n;i++)
{
if(ma[u][i]&&!vis[i]&&!deleted[i]&&col[i])
{
vis[i]=true;
if(cy[i]==-1||FindPateX(cy[i]))
{
cx[u]=i;
cy[i]=u;
return true;
}
}
}
return false;
} bool FindPateY(int u)
{
if(deleted[u]) return false;
for(int i=0;i<n;i++)
{
if(ma[u][i]&&!vis[i]&&!deleted[i]&&!col[i])
{
vis[i]=true;
if(cx[i]==-1||FindPateY(cx[i]))
{
cx[i]=u;
cy[u]=i;
return true;
}
}
}
return false;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int u,v;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&col[i]);
memset(ma,0,sizeof(ma));
while(m--)
{
scanf("%d%d",&u,&v);
if(col[u]!=col[v])
ma[u][v]=ma[v][u]=1;
}
int ans=0;
memset(cx,-1,sizeof(cx));
memset(cy,-1,sizeof(cy));
memset(deleted,false,sizeof(deleted));
for(int i=0;i<n;i++)
{
if(!col[i]&&cx[i]==-1)
{
memset(vis,0,sizeof(vis));
ans+=FindPateX(i);
}
}
printf("%d",ans);
int temp;
for(int i=0;i<n;i++)
{
if(!col[i])
{
if(cx[i]!=-1)
{
temp=cx[i];
cx[i]=cy[temp]=-1;
memset(vis,0,sizeof(vis));
deleted[i]=true;
if(FindPateY(temp))
deleted[i]=false;
else
printf(" %d",i);
}
}
else
{
if(cy[i]!=-1)
{
temp=cy[i];
cx[temp]=cy[i]=-1;
deleted[i]=true;
memset(vis,0,sizeof(vis));
if(FindPateX(temp))
deleted[i]=false;
else
printf(" %d",i);
}
}
}
puts("");
}
return 0;
}
POJ3715【二分匹配-增广】的更多相关文章
- Secret Milking Machine POJ - 2455 网络流(Dinic算法---广搜判断+深搜增广)+时间优化+二分
题意: 第一行输入N M C ,表示从1到N有M条无向边,现在要从1走到N 走C次完全不同的路径,求最长边的最小值.下面M行是从a点到b点的距离. 建图: 题上说从两点之间可以有多条边,问的是从1~N ...
- [kuangbin带你飞]专题十 匹配问题 二分匹配部分
刚回到家 开了二分匹配专题 手握xyl模板 奋力写写写 终于写完了一群模板题 A hdu1045 对这个图进行 行列的重写 给每个位置赋予新的行列 使不能相互打到的位置 拥有不同的行与列 然后左行右列 ...
- [ACM_图论] Sorting Slides(挑选幻灯片,二分匹配,中等)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)
描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...
- poj1274 二分匹配
今天复习二分匹配,A 了一道模板题. 二分匹配需要理解增广路的寻找.用dfs来更新最大匹配.注意一些点:赋初值:愚蠢地把==写成了= ; 然后match的记值;每个点都要重新走一遍. #include ...
- UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)
题意:在方格图上打小怪,每次可以清除一整行或一整列的小怪,问最少的步数是多少,又应该在哪些位置操作(对输出顺序没有要求). 分析:最小覆盖问题 这是一种在方格图上建立的模型:令S集表示“行”,T集表示 ...
- poj 1247 The Perfect Stall 裸的二分匹配,但可以用最大流来水一下
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16396 Accepted: 750 ...
- 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 3036 Escape 网格图多人逃生 网络流||二分匹配 建图技巧
题意: 每一个' . '有一个姑娘, E是出口,'.'是空地 , 'X' 是墙. 每秒钟每一个姑娘能够走一步(上下左右) 每秒钟每一个出口仅仅能出去一个人 给定n*m的地图, 时限T 问全部姑娘是否能 ...
随机推荐
- PythonCookBook笔记——字符串和文本
字符串和文本 使用多个分隔符分割字串 使用正则re.split()方法. >>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>& ...
- ZeroClipboard—ZeroClipboard的使用
1.ZeroClipboard的作用: 借助Zero Clipboard能够简单高速地将内容拷贝到剪贴板,相似点击某些网页中"复制"按钮后复制对应区域的内容. 2.ZeroClip ...
- 防止ViewPager中的Fragment被销毁
pager.setOffscreenPageLimit(2); 就可以让ViewPager多缓存一个页面
- xmanager 5图文使用教程
1.Xconfig xconfig是linux下X Window环境中用于配制的一个工具,和menuconfig相似,但用法更友好方便. 当你创建一个会话,会话分配一个默认的配置文件.Xmanager ...
- jQuery处理点击父级checkbox所有子级checkbox都选中,取消选中所有子级checkbox都取消
注意,每个foreach标签内部都加一个div用来区分各个层次关系,模板代码如下: <foreach name='node' item='v'> <div class='a' ali ...
- tornado之表单和模板
之前在indexHandler中通过self.write()方法在对应的网页中写入具体的字符信息. 如果我们想直接返回一个网页那么这个时候就需要用到模板了 首先在工程目录下新建一个template文件 ...
- 解析json的方式
一.Javascrip操作json 原始方式: var str1 = '{ "name": "jacun", "addr": "b ...
- 怎样把word直接转换成ppt
- signal( SIGINT, SigIntHandler )
signal 的第1个参数signum表示要捕捉的信号,第2个参数是个函数指针,表示要对该信号进行捕捉的函数,该参数也可以是SIG_DEF(表示交由系统缺省处理,相当于白注册了)或SIG_IGN(表示 ...
- Python视频教程
Python这门语言相对学起来是简单点的,尤其对于测试人员来说,如果达到可以写自动化测试脚本的程度的话,学些基础就是可以的.那么在网上也是有很多资源的,各种培训的视频.作为一名过来人(哈哈),或者说是 ...