B - The Accomodation of Students - hdu 2444(最大匹配)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; const int MAXN = ; ///rl记录与根节点的关系
int fa[MAXN], rl[MAXN];
int FindFather(int x)
{
int k = fa[x];
if(fa[x] != x)
{
fa[x] = FindFather(fa[x]);
rl[x] = (rl[x]+rl[k]) % ;
} return fa[x];
} int x[MAXN], y[MAXN], nx, N;
bool G[MAXN][MAXN], used[MAXN]; void InIt()
{
nx = ;
memset(G, , sizeof(G));
for(int i=; i<MAXN; i++)
{
fa[i] = i;
x[i] = y[i] = ;
rl[i] = ;
}
}
bool FindOk(int u)
{
for(int i=; i<=N; i++)
{
if(G[u][i] && used[i] == false)
{
used[i] = true;
if(!y[i] || FindOk(y[i]))
{
y[i] = u;
return true;
}
}
} return false;
} int main()
{
int M; while(scanf("%d%d", &N, &M) != EOF)
{
int i, u, v, ok=; InIt(); while(M--)
{
scanf("%d%d", &u, &v);
G[u][v] = G[v][u] = true; int ru = FindFather(u);
int rv = FindFather(v); if(ru == rv && rl[u] == rl[v])
ok = ;
else if(ru != rv)
{
fa[ru] = rv;
rl[ru] = (rl[u]+rl[v]+)%;
}
} if(ok)
printf("No\n");
else
{
for(i=; i<=N; i++)
{
u = FindFather(i);
if(rl[i] == )
x[nx++] = i;
} int ans = ;
for(i=; i<nx; i++)
{
memset(used, false, sizeof(used));
if(FindOk(x[i]) == true)
ans++;
} printf("%d\n", ans);
}
} return ; }
B - The Accomodation of Students - hdu 2444(最大匹配)的更多相关文章
- The Accomodation of Students HDU - 2444(判断二分图 + 二分匹配)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- The Accomodation of Students HDU - 2444 二分图判定 + 二分图最大匹配 即二分图-安排房间
/*655.二分图-安排房间 (10分)C时间限制:3000 毫秒 | C内存限制:3000 Kb题目内容: 有一群学生,他们之间有的认识有的不认识.现在要求把学生分成2组,其中同一个组的人相互不认 ...
- (匹配)The Accomodation of Students --HDU --2444
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2444 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 2444 The Accomodation of Students 二分图判定+最大匹配
题目来源:HDU 2444 The Accomodation of Students 题意:n个人能否够分成2组 每组的人不能相互认识 就是二分图判定 能够分成2组 每组选一个2个人认识能够去一个双人 ...
- HDU 2444 The Accomodation of Students(判断二分图+最大匹配)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- (hdu)2444 The Accomodation of Students 判断二分图+最大匹配数
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Problem Description There are a group of s ...
- HDU 2444 The Accomodation of Students【二分图最大匹配问题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意:首先判断所有的人可不可以分成互不认识的两部分.如果可以分成 ,则求两部分最多相互认识的对数. ...
- HDU 2444 The Accomodation of Students (二分图最大匹配+二分图染色)
[题目链接]:pid=2444">click here~~ [题目大意]: 给出N个人和M对关系,表示a和b认识,把N个人分成两组,同组间随意俩人互不认识.若不能分成两组输出No,否则 ...
- hdu 2444 The Accomodation of Students(最大匹配 + 二分图判断)
http://acm.hdu.edu.cn/showproblem.php?pid=2444 The Accomodation of Students Time Limit:1000MS Me ...
随机推荐
- CSS 让标点符号不出现在行首
word-break:break-all; 这条语句的作用是让语句到达边界的时候自动换行,但是正是这个样式让标点符号跑到了行首. 语法: word-break : normal | break-all ...
- segue生命周期
segue生命周期:概述: 理解segue工作原理,需要理解一个segue对象的生命周期.segue对象是UIStoryboardSegue的实例或者是它的一个子类.所有iOS app都不能直接创建s ...
- Android 的 Relative Layout 常量
android:layout_above 将该控件的底部置于给定ID的控件之上 --Rule that aligns a child's bottom edge ...
- ASP.NET Core中使用Razor视图引擎渲染视图为字符串
一.前言 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了模型到视 ...
- onresize的定义方式
1.直接在html中定义如<body onresize="doResize()"/> 2.直接给onresize赋值给window和body的onresize赋值如wi ...
- JFrome 登陆/注册/回显/输出流小程序之二
- android 05
控件:RadioButton CheckedBox RatingBar ProgressBar 下拉列表:ListView Spinner <!-- 单选按钮必须放在单选按钮组当中才能生效 ,并 ...
- 在Linux-0.11中实现基于内核栈切换的进程切换
原有的基于TSS的任务切换的不足 进程切换的六段论 1 中断进入内核 2 找到当前进程的PCB和新进程的PCB 3 完成PCB的切换 4 根据PCB完成内核栈的切换 5 切换运行资源LDT 6 利用I ...
- underscorejs-reduce学习
2.3 reduce 2.3.1 语法: _.reduce(list, iteratee, [memo], [context]) 2.3.2 说明: reduce方法把list中元素归结为一个单独的数 ...
- 新思路:Exception Handle
以前提到异常处理,马上就想到加try-catch. 没错,这种应激反应是对的.关键是怎么加? 如果想为每一个方法都加异常处理,输出相同格式的异常信息,应该怎么做呢? 难道是为每一个方法加一个try-c ...