标题效果:有着n学生,有一些同学之间的特殊关系。。

。为了一探究竟m学生。要求m免两者之间的学生有没有这样的特殊关系

解决问题的思路:二分图的问题,殊关系是对称的。所以能够将两个点集都设置为n个点。求出最大匹配后再除以2就可以得到(由于关系是对称的。所以所求得的最大匹配是双倍的)

得到最大匹配了,能够由定理得到 最大独立集 = n - 最大匹配数

#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int N = 510;
vector<int> s[N];
int vis[N];
int link[N];
int n;
bool dfs(int u) {
for(int i = 0; i < s[u].size(); i++) {
if(!vis[s[u][i]]) {
vis[s[u][i]] = 1;
if(link[s[u][i]] == -1 || dfs(link[s[u][i]])) {
link[s[u][i]] = u;
return true;
}
}
}
return false;
} int main() {
while(scanf("%d", &n) != EOF) {
for(int i = 0; i < n; i++)
s[i].clear();
int x, y, z;
for(int i = 0; i < n; i++) {
scanf("%d: (%d)", &x, &y);
for(int j = 0; j < y; j++) {
scanf("%d", &z);
s[x].push_back(z);
}
}
int ans = 0;
memset(link, -1, sizeof(link));
for(int i = 0; i < n; i++) {
memset(vis,0,sizeof(vis));
if(dfs(i))
ans++;
}
printf("%d\n", n - ans / 2);
}
return 0;
}

最新文章

  1. WPF 自定义窗口关闭按钮
  2. BAT 技术团队博客
  3. SqlServer英文单词全字匹配
  4. Linux中zip压缩和unzip解压缩命令详解
  5. PHP带重试功能的curl
  6. Sharepoint更新字段触发工作流(无代码)
  7. COM组件(MFC篇)
  8. &lt;转&gt;Python3.x和Python2.x的区别介绍
  9. 【原】模式之-适配器Adapter模式
  10. C# 语言的两个html解析器
  11. js判断MAC地址
  12. Eclipse插件的各种安装方法
  13. 【转】如何成为一位优秀的创业CEO
  14. 宏WINAPI和几种调用约定
  15. 内置函数值 -- chr() ord() -- 字符和ascii的转换
  16. The perception and large margin classifiers
  17. 二叉搜索树、AVL平衡二叉搜索树、红黑树、多路查找树
  18. QTP_随机生成N个字符(包含数字和字母)
  19. 2018-2019-20172329 《Java软件结构与数据结构》第五周学习总结
  20. Android 自定义 ListView 上下拉动&ldquo;刷新最新&rdquo;和&ldquo;加载更多&rdquo;歌曲列表

热门文章

  1. JS学习笔记 - fgm练习 - 多按钮控制同个div属性
  2. 常用到的Linux命令
  3. java中Arrays类的应用
  4. 硬件——STM32 , SN74HC573锁存器
  5. spring boot 2.x Path with &quot;WEB-INF&quot; or &quot;META-INF&quot;
  6. 10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析
  7. iproute2交叉编译
  8. POJ 2823 Sliding Window 线段树
  9. PatentTips - SNMP firewall
  10. [AngularJS Ng-redux] Integrate ngRedux