LOJ 1201 - A Perfect Murder(二分匹配 最大独立集)
来源:互联网 发布:塔里木农垦大学知乎 编辑:程序博客网 时间:2024/05/21 08:46
题目链接:http://lightoj.com/volume_showproblem.php?problem=1201
"Yes, I am the murderer. No doubt" I had to confess it in front of all. But wait, why I am confessing? Nobody wants to go to jail, neither do I. As you have suspected there is something fishy. So, let me explain a bit.
The murder was happened in 19th June, at 11:30 pm this year (2009) according to the medical report. So, I was asking the judge "Can you find the time 19th June 11:30 pm in Bangladesh?" The judge informed other reporters to find the time. But alas! There was no time - "2009, 19th June, 11:30 pm". So, the judge got a bit confused about my confession. So, I began to tell them, "The time the murder was happened, is not a valid time according to you. So, how can you claim that I am the murderer?"
And what happened next, you all know. I am in the streets again with a clean sheet.
But now I have planned to kill again. I have a list of N mosquitoes which are to be killed. But there is a small problem. If I kill a mosquito, all of his friends will be informed, so they will be prepared for my attack, thus they will be impossible to kill. But there is a surprising fact. That is if I denote them as a node and their friendship relations as edges, the graph becomes acyclic.
Now I am planning when and how to kill them (how to get rid of the law!) and you have to write a program that will help me to find the maximum number of mosquito I can kill. Don't worry too much, if anything goes wrong I will not mention your name, trust me!
Input
Input starts with an integer T (≤ 50), denoting the number of test cases.
Each case starts with a blank line and two integers N (1 ≤ N ≤ 1000) denoting the number of mosquito I want to kill and M denoting the number of friendship configurations. Each of the next M lines contains two integers a and b denoting that ath and bth mosquitoes are friends. You can assume that(1 ≤ a, b ≤ N, a ≠ b) and each friendship relation is given only once. As I have already mentioned, you will not find any cycle in the relations.
Output
For each case, print the case number and the maximum number of mosquitoes I can kill considering the conditions described above.
Sample Input
Output for Sample Input
3
4 3
1 2
1 3
1 4
3 2
1 2
2 3
5 4
1 2
1 3
2 4
2 5
Case 1: 3
Case 2: 2
Case 3: 3
PS:
二分图最大独立集=顶点数-二分图最大匹配
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;//顶点编号从1开始的#define MAXN 1017int LN, RN;//L,R数目int g[MAXN][MAXN], linker[MAXN];bool used[MAXN];int dfs(int L)//从左边开始找增广路径{ int R; for(R = 1; R <= RN; R++) { if(g[L][R]!=0 && !used[R]) { //找增广路,反向 used[R]=true; if(linker[R] == -1 || dfs(linker[R])) { linker[R]=L; return 1; } } } return 0;//这个不要忘了,经常忘记这句}int hungary(){ int res = 0 ; int L; memset(linker,-1,sizeof(linker)); for( L = 1; L <= LN; L++) { memset(used,0,sizeof(used)); if(dfs(L) != 0) res++; } return res;}int main(){ int t; int n, m; int cas = 0; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(g,0,sizeof(g)); for(int i = 1; i <= m; i++) { int x, y; scanf("%d%d",&x,&y); g[x][y] = 1; g[y][x] = 1; } LN = n; RN = n; int ans = hungary();//最大匹配数 printf("Case %d: %d\n",++cas,n-ans/2); } return 0 ;}
- LOJ 1201 - A Perfect Murder(二分匹配 最大独立集)
- LightOJ 1201 - A Perfect Murder【二分图最大独立集】
- LightOJ 1201 A Perfect Murder 最大独立集
- loj 1201(最大独立集)
- LightOJ - 1201 A Perfect Murder(树形DP)
- lightoj 1201 - A Perfect Murder 树形DP
- Light OJ 1201 - A Perfect Murder
- The Perfect Stall(最大二分匹配)
- 二分图最大匹配 & 最大独立集
- loj 1150(spfa预处理+二分+最大匹配)
- hdu 2768 (二分匹配,最大独立集)
- poj 3692 Kindergarten(二分图匹配,最大独立集)
- poj3020 二分图匹配 最大独立集
- poj3692Kindergarten 二分匹配之最大独立集
- hdu3829 二分匹配 最大独立集
- POJ 1466 二分匹配 最大独立集
- 二分图匹配 --- 最大独立集
- Light oj 1201 - A Perfect Murder(树形dp)
- java的多线程同步及锁的机制 http://f.dataguru.cn/thread-483280-1-1.html (出处: 炼数成金)
- Codeforces Round #315 (Div. 1)
- TextView加载Html内容(自定义TextView)
- 微信公众号开发系列-网页授权获取用户基本信息
- Linux 下 安装 PHP 的 PDO_MYSQL 扩展
- LOJ 1201 - A Perfect Murder(二分匹配 最大独立集)
- IOS项目上架时问题的解决方案(3)
- android-ndk 数据传递
- 解决点击状态栏时ScrollView自动滚动到初始位置失效办法
- 腾讯云使用教程 基本工具 开发工具软件 从入门到精通 图文教程
- python抓取网页的一个小例子
- 2.6/ 7 精确表示浮点数 + 最大公约数
- HDU 5071 Chat (神一般的模拟题)
- C++类型转换小疑惑