题意:

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;
}

最新文章

  1. 【leetcode】Two Sum
  2. python下编译py成pyc和pyo
  3. Python数学函数
  4. MySql MyISAM和InnoDB的区别
  5. js禁用回退键backspace解决办法
  6. 学习web前端三个月感悟
  7. Html - 返回Top
  8. 开源网络备份软件 bacula 的安装、配置和运行
  9. myclips常用快捷键
  10. typedef与define的区别
  11. IE 下a标签在 position:absolute 后无法点击的问题
  12. Thrift对多接口服务的支持
  13. 一步一步重写 CodeIgniter 框架 (10) —— 使用 CodeIgniter 类库(续)
  14. 在GNU/Linux下使用命令行自动挂载与卸载USB磁盘
  15. ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用【地图服务】
  16. 实现一个网易云音乐的 BottomSheetDialog
  17. Iterm2/Mac自带终端工具快速进入你想进入的虚拟机教程
  18. (爬虫)urllib库
  19. java学习(一)
  20. 5、爬虫系列之scrapy框架

热门文章

  1. WannaCry勒索病毒处理指南
  2. activity fragment 转场动画
  3. Dropout: A Simple Way to Prevent Neural Networks fromOverfitting
  4. MySql in子句 效率低下优化(亲测有效,从200秒变1秒)
  5. 设置开启telnet功能
  6. pdf文件的作成
  7. 【Effective C++】让自己习惯C++
  8. 解决Error:Unable to find method &#39;org.gradle.api.internal.project.ProjectInternal.
  9. VVDocument+Appledoc生成文档
  10. POJ2115 C Looooops ——模线性方程(扩展gcd)