zoukankan      html  css  js  c++  java
  • UVA-12083 Guardian of Decency 二分图 最大独立集

    题目链接:https://cn.vjudge.net/problem/UVA-12083

    题意

    学校组织去郊游,选择最多人数,使得任意两个人之间不能谈恋爱
    不恋爱条件是高差大于40、同性、喜欢的音乐风格不同、喜欢的运动相同中的任意一个

    思路

    二分图最大独立集,集合内任两节点间没有边
    最大独立集节点数=总结点数-最大匹配
    模版题咯

    提交过程

    CE1 选错语言
    CE2 string头文件忘写
    AC

    代码

    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <algorithm>
    using namespace std;
    const int maxn=500+20;
    struct Person{
    	int hei;
    	bool male;
    	string music, sport;
    }person[2][maxn];
    bool G[maxn][maxn], vis[maxn];
    int match[maxn], n, m;
    bool dfs(int u){
    	for (int i=0; i<m; i++) if (!vis[i] && G[u][i]){
    		vis[i]=true;
    		if (match[i]==-1 || dfs(match[i])){
    			match[i]=u;
    			return true;
    		}
    	}return false;
    }
    
    int solve(void){
    	int ans=0;
    	memset(match, -1, sizeof(match));
    	for (int i=0; i<n; i++){
    		memset(vis, false, sizeof(vis));
    		if (dfs(i)) ans++;
    	}return ans;
    }
    
    int main(void){
    	int T, size;
    	char music[100], sport[100], sex[5];
    	int hei;
    
    	scanf("%d", &T);
    	while (T--){
    		n=m=0;
    		scanf("%d", &size);
    		for (int i=0; i<size; i++){
    			scanf("%d%s%s%s", &hei, sex, music, sport);
    			if (sex[0]=='M') person[0][n++]=Person{hei, 1, string(music), string(sport)};
    			else person[1][m++]=Person{hei, 0, string(music), string(sport)};
    		}
    
    		memset(G, false, sizeof(G));
    		for (int i=0; i<n; i++)
    			for (int j=0; j<m; j++){
    				Person &male=person[0][i], &female=person[1][j];
    				if (abs(male.hei-female.hei)<=40 && male.music==female.music && male.sport!=female.sport)
    					G[i][j]=true;
    			}
    		printf("%d
    ", n+m-solve());
    	}
    
    	return 0;
    }
    
    Time Memory Length Lang Submitted
    40ms 1265 C++11 5.3.0 2018-07-26 14:06:14
  • 相关阅读:
    JAVA THINGKING (二)随笔
    HP-UX磁带备份错误收集
    在cocos2d-x界面中嵌入Android的WebView
    PIMPL设计模式的理解和使用
    10453 Make Palindrome (dp)
    linux swap 分区调控(swap分区 lvm管理)
    如何让ios app支持32位和64位?
    数据持久化(二)存取沙箱文件
    [置顶] lvs-tun隧道模式搭建
    【D3.V3.js系列教程】--(十五)SVG基本图形绘制
  • 原文地址:https://www.cnblogs.com/tanglizi/p/9385687.html
Copyright © 2011-2022 走看看