poj 2771 最大独立集
这道题又无耻的抄袭了别人的代码。
刚开始以为是最大匹配,把条件不相符的人连一起,然后求最大匹配,感觉麻烦,然后看了别人的解题报告,是把相符的人连一起,然后减去,其实就是最大独立集。
最大独立集=|G|-最大匹配。
首先先把性别分开,因为同性不能成为couple,然后把符合条件的异性连一起,然后就是最大匹配了。
#include<stdio.h>
#include<string.h>
#define maxn 505
#define maxl 106 struct Person
{
int h;
char music[maxl];
char sport[maxl];
} male[maxn], female[maxn]; int uN, vN, n;
bool g[maxn][maxn];
int visit[maxn],match[maxn];
int abs(int x)
{
if(x<)
return -x;
return x;
}
int DFS(int u)
{
for(int i=;i<vN;i++) if(!visit[i]&&g[u][i])
{
visit[i]=;
if(match[i]==- || DFS(match[i]))
{
match[i]=u;
return ;
}
}
return ;
} int MaxMatch()
{
memset(match,-,sizeof(match));
int ans=;
for(int i=;i<uN;i++)
{
memset(visit,,sizeof(visit));
if(DFS(i)) ans++;
}
return ans;
} void input()
{
scanf("%d", &n);
uN = vN = ;
for (int i = ; i < n; i++)
{
int a;
char sex[];
scanf("%d%s", &a, sex);
if (sex[] == 'M')
{
male[uN].h = a;
scanf("%s%s", male[uN].music, male[uN].sport);
uN++;
}
else
{
female[vN].h = a;
scanf("%s%s", female[vN].music, female[vN].sport);
vN++;
}
}
} bool couple(int a, int b)
{
if (abs(male[a].h - female[b].h) > )
return false;
if (strcmp(male[a].music, female[b].music))
return false;
if (strcmp(male[a].sport, female[b].sport) == )
return false;
return true;
} void make()
{
memset(g, , sizeof(g));
for (int i = ; i < uN; i++)
for (int j = ; j < vN; j++)
if (couple(i, j))
g[i][j] = true;
} int main()
{
int t;
scanf("%d", &t);
while (t--)
{
input();
make();
printf("%d\n", n - MaxMatch());
}
return ;
}
poj 2771 最大独立集的更多相关文章
- POJ 2771 最大独立集 匈牙利算法
(为什么最大独立集的背景都是严打搞对象的( _ _)ノ|壁) 思路:匈牙利算法 没什么可说的-- // by SiriusRen #include <cstdio> #include &l ...
- poj——2771 Guardian of Decency
poj——2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5916 ...
- Poj(2771),最大独立集
题目链接:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K To ...
- POJ 2771 Guardian of Decency 【最大独立集】
传送门:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Tot ...
- POJ 2771 Guardian of Decency(最大独立集数=顶点数-最大匹配数)
题目链接: http://poj.org/problem?id=2771 Description Frank N. Stein is a very conservative high-school t ...
- POJ 2771 二分图(最大独立集)
Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5244 Accepted: 21 ...
- Guardian of Decency POJ - 2771 【二分匹配,最大独立集】
Problem DescriptionFrank N. Stein is a very conservative high-school teacher. He wants to take some ...
- poj 2771 Guardian of Decency 解题报告
题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距 ...
- POJ 2771 Guardian of Decency
http://poj.org/problem?id=2771 题意: 一个老师想带几个同学出去,但是他怕他们会谈恋爱,所以带出去的同学两两之间必须满足如下条件之一: ①身高差大于40 ②同性 ③喜欢 ...
随机推荐
- 提示框插件SweetAlert
SweetAlert可以替代Javascript原生的alert和confirm等函数呈现的弹出提示框, 它将提示框进行了美化,并且允许自定义, 支持设置提示框标题.提示类型.内容展示图片.确认取消按 ...
- http头部信息研究
1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Charset: 浏览器申明自 ...
- 【转】jQuery on()选择器函数
on()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统 ...
- sql中Statement与PreparedStatement的区别
1.Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句,也就是说sql语句是静态的. 2.PrepareStatement是预编译的sql语句对象,sql语句被预编 ...
- Bootstrap之Button.js
查看Button.js的源代码 +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ================= ...
- vs2005 测试 lua环境
(1)添加文件核路径 (2)库文件路径 (3)main.cpp #include <stdio.h>#include <string.h> extern "C&quo ...
- linux查看系统的日志的一些实用操作
last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f <记录文件> 指定记录文件. -n <显示 ...
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"的作用
为页面添加正确的DOCTYPE 很多设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用.DOCTYPE是document type的简写.主要用来说明你用的XHTML或者HTML是什么 ...
- android从网络获取图片
http://blog.csdn.net/wangjinyu501/article/details/8219317 http://www.cnblogs.com/JerryWang1991/archi ...
- 没有产品,没有用户的,绝对不要浪费时间去联系风投——没有过home run的创业人,想办法先做出产品,找到少量用户,没有任何销售成本
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Kuan Huang链接:http://www.zhihu.com/question/19641135/answer/1353 ...