裸的二分图匹配

题目poj.org/problem?id=1469

不解释:

aaarticlea/png;base64,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" alt="" width="689" height="32" />

 #include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define eps 1e-15
#define MAXN 305
#define INF 1000000007
#define MAX(a,b) (a > b ? a : b)
#define MIN(a,b) (a < b ? a : b)
#define mem(a) memset(a,0,sizeof(a)) bool G[MAXN][MAXN],vis[MAXN];
int Left[MAXN],N,P,T; bool DFS(int u)
{
for(int v=;v<=N;v++) if(G[u][v] && !vis[v])
{
vis[v] = true;
if(!Left[v] || DFS(Left[v]))
{
Left[v] = u;
return true;
}
}
return false;
} int main()
{
while(~scanf("%d", &T))while(T--)
{
mem(G); mem(Left);
scanf("%d%d", &P, &N);
int num,x;
for(int i=;i<=P;i++)
{
scanf("%d",&num);
for(int j=;j<num;j++)
{
scanf("%d", &x);
G[i][x] = true;
}
}
int ans = ;
for(int i=;i<=P;i++)
{
mem(vis);
if(!DFS(i)) {ans =;break;}
}
printf("%s\n",ans?"YES":"NO");
}
return ;
}

POJ1469COURSES(二分图匹配)的更多相关文章

  1. UVA 12549 - 二分图匹配

    题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会 ...

  2. POJ 1274 裸二分图匹配

    题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #includ ...

  3. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Sta ...

  4. HDU1281-棋盘游戏-二分图匹配

    先跑一个二分图匹配,然后一一删去匹配上的边,看能不能达到最大匹配数,不能这条边就是重要边 /*----------------------------------------------------- ...

  5. HDU 1083 网络流之二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...

  6. hdu 5727 Necklace dfs+二分图匹配

    Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...

  7. BZOJ 1059 & 二分图匹配

    题意: 判断一个黑白染色的棋盘能否通过交换行或列使对角线上都是黑色. SOL: 真是有点醉...这种问题要么很神要么很水...第一眼感觉很水但就是不造怎么做...想了10分钟怎么感觉就是判断个数够不够 ...

  8. 【POJ 3020】Antenna Placement(二分图匹配)

    相当于用1*2的板覆盖给定的h*w的格子里的点,求最少的板.可以把格子相邻的分成两个集合,如下图,0为一个集合,1的为一个,也就是(行数+列数)为奇数的是一个集合,为偶数的为另一个集合.1010101 ...

  9. BZOJ-1143&&BZOJ-2718 祭祀river&&毕业旅行 最长反链(Floyed传递闭包+二分图匹配)

    蛋蛋安利的双倍经验题 1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1901 Solved: 951 ...

随机推荐

  1. dos保存adb logcat读取的Android信息

    /***************************************************************************** * dos保存adb logcat读取的A ...

  2. HDU 3573 Buy Sticks (逻辑)

    题意:a,b,c三种棍子长度分别为20,28,32,现需要这三种棍子数根,欲买长为75的棍子来剪成这三种(不够长的就废弃) ,问需要买多少根. 思路:将所有棍子尽可能和其他搭配起来,使得数量减到最少. ...

  3. 优雅地使用CodeIgniter 3之Session类库(1)(转)

    相信无数人在使用CI2的Session类库时,遇到各种的坑,各种抱怨,各种不解.在CI中国论坛能搜到大量关于Session类库的提问,说明要想用 好session类库还是得下一番功夫.本文将先从CI2 ...

  4. @Repository @Resource

    Spring的注解形式:@Repository.@Service.@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean. @Repository.@Service.@C ...

  5. Android Studio 学习 - 基本控件的使用;Intent初学

    Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...

  6. 【转】linux设备驱动程序之简单字符设备驱动

    原文网址:http://www.cnblogs.com/geneil/archive/2011/12/03/2272869.html 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用 ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者

    Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者 这一篇主要讲作为一名使用公众平台接口的开发者,你需要知道的一些东西.其中也涉及到一些微信官方的规定或比较掩蔽的注意点 ...

  8. 所有 HTTP 状态代码及其定义

    所有 HTTP 状态代码及其定义. 代码  指示  2xx  成功  200  正常:请求已完成.  201  正常:紧接 POST 命令.  202  正常:已接受用于处理,但处理尚未完成.  20 ...

  9. C# 使用NPlot绘图技巧

    原文 C# 使用NPlot绘图技巧 图表控件一直是很难找的,特别是免费又强大的.NPlot是一款非常难得的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等,而且它免费又开源,使 ...

  10. sqlplus常用命令

    原文 sqlplus常用命令 desc 表名            显示表的结构 show user           显示当前连接用户 show error            显示错误 sho ...