POJ - 2771 Guardian of Decency 二分图 最大匹配数

题目大意:有n个人要参加一项活动,活动要求参加的人里面尽量不要有couples,主办方提出了四个降低couples的方法:

1.两个人的身高差大于40

2.性别相同

3.喜欢的音乐风格不同

4.喜欢的运动相同

只要满足其中的一项就认定两人不是couples

现在给出n个人的四项数据,问最多能邀请到多少人

解题思路:这题和Poj 1466 Girls and Boys这题很相似,只不过这题给的条件不是直接给出的,而是要我们自己去找的

只要两个人四个条件都不满足,就可以认为他们是couples了(相当于poj 1466这题的暗恋关系)。所以,找出两两之间4个条件都不满足的关系,那么这题就和poj 1466这题很像了,那么这题就变成了给出一定的暗恋关系,要求你找出m个人,这m个人中的任何两人都不属于暗恋关系。

#include<cstdio>
#include<cstring>
#include<vector>
#include<cstdio>
using namespace std;
const int N = 510;
const int maxn = 110;
struct person{
    int height;
    char sex;
    char style[maxn], sport[maxn];
}P[N];
int n, link[N],vis[N];
vector<int> g[N];
void init() {
    scanf("%d", &n);
    for(int i = 0; i < n; i++) {
        scanf("%d %c %s %s", &P[i].height, &P[i].sex, P[i].style, P[i].sport);
        g[i].clear();
    }
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(i != j) {
                if( !( (P[i].height - P[j].height) > 40 || P[j].height - P[i].height > 40  || P[i].sex == P[j].sex || strcmp(P[i].style,P[j].style) != 0 || strcmp(P[i].sport, P[j].sport) == 0))
                    g[i].push_back(j);
            }
    memset(link, -1, sizeof(link));
}

bool dfs(int u) {
    for(int i = 0; i < g[u].size(); i++) {
        if(vis[g[u][i]])
            continue;
        vis[g[u][i]] = 1;
        if(link[g[u][i]] == -1 || dfs(link[g[u][i]])) {
            link[g[u][i]] = u;
            return true;
        }
    }
    return false;
}

void hungary() {
    int ans = 0;
    for(int i = 0; i < n; i++) {
        memset(vis,0,sizeof(vis));
        if(dfs(i))
            ans++;
    }
    printf("%d\n", n - ans / 2);
}

int main() {
    int test;
    scanf("%d", &test);
    while(test--) {
        init();
        hungary();
    }
    return 0;
}
时间: 2024-10-29 21:00:21

POJ - 2771 Guardian of Decency 二分图 最大匹配数的相关文章

poj——2771 Guardian of Decency

poj——2771    Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5916   Accepted: 2458 Description Frank N. Stein is a very conservative high-school teacher. He wants to take some of his students on an excursion, but he i

poj 2771 Guardian of Decency 解题报告

题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距  > 40cm 2.相同性别 3.喜欢的音乐种类  不同 4.有共同喜爱的 运动 只要满足其中这4个条件中的一个(当然越多越好啦),就可以将他们编为一组啦(一组两个人),求能被编为一组的最多组数. 这题实质上求的是二分图的最大独立集.  最大独立集 = 顶点数 - 最大匹配数 可以这样转化:两个人至少

poj 2771 Guardian of Decency【最大点独立集】

K - Guardian of Decency Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2771 Appoint description:  System Crawler  (2014-08-17) Description Frank N. Stein is a very conservative high-school teac

POJ 2771 Guardian of Decency (二分图最大点独立集)

Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 6133   Accepted: 2555 Description Frank N. Stein is a very conservative high-school teacher. He wants to take some of his students on an excursion, but he is afraid that

poj 2771 Guardian of Decency

Guardian of Decency http://poj.org/problem?id=2771 Time Limit: 3000MS   Memory Limit: 65536K       Description Frank N. Stein is a very conservative high-school teacher. He wants to take some of his students on an excursion, but he is afraid that som

UVA 12083 - Guardian of Decency(二分图最大匹配)

UVA 12083 - Guardian of Decency 题目链接 题意:给定一些男女,满足身高差不大于40,喜欢同一种音乐,不喜欢同一种体育项目,并且性别不同,就可能发生关系,现在老师要带一些男女出去玩,要求不能有一对发生关系,问最多能带多少人 思路:分男女,把会发生关系的连边,然后做最大匹配,最后n-最大匹配就是最多能带的人 代码: #include <cstdio> #include <cstring> #include <string> #include

poj 2771 Guardian of Decency(最大独立数)

题意:人与人之间满足4个条件之一即不能成为一对(也就说这4个条件都不满足才能成为一对),求可能的最多的单身人数. 思路:把男女分为两部分,接下来就是二分图的匹配问题.把能成为一对的之间连边,然后求出最大匹配.题目要求的是最大独立数. 最大独立数=顶点数-最大匹配数 #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #

POJ 1274--The Perfect Stall【二分图 &amp;&amp; 最大匹配数 &amp;&amp; 水题】

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20795   Accepted: 9386 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr

POJ 2239--Selecting Courses【二分图 &amp;&amp; 最大匹配数 &amp;&amp; 水题】

Selecting Courses Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9363   Accepted: 4164 Description It is well known that it is not easy to select courses in the college, for there is usually conflict among the time of the courses. Li Mi