题目链接: hdu 5971 Wrestling Match

题意:N个选手,M场比赛,已知x个好人,y个坏人,问能否将选手划分成好人和坏人两个阵营,保证每场比赛必有一个好人和一个坏人参加。

题解:dfs染色。听说题意模糊?从样例来看,第一个例子应该是因为2可能是好人可能是坏人,所以不确定就NO了...

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
const int N = ;
const int inf = 0x3f3f3f3f;
int n, m , x, y, flag;
vector<int> g[N];
int vis[N];
void dfs(int u) {
int f = ;
if(vis[u]==-) {vis[u] = ;f = ;}
for(int i = ; i < g[u].size(); ++i) {
int v = g[u][i];
if(vis[v]==vis[u] && f==) {f=; vis[u] = -vis[v];}
if(vis[v]==vis[u]) flag = ;
if(vis[v]==-) {vis[v] = -vis[u]; dfs(v);}
}
}
int main() {
int i, j, t, u, v;
while(~scanf("%d%d%d%d", &n, &m, &x, &y)) {
for(i = ; i <= n; ++i) g[i].clear();
CLR(vis, -); flag = ;
while(m--) {
scanf("%d%d", &u, &v);
g[u].push_back(v);
g[v].push_back(u);
}
while(x--) {
scanf("%d", &u);
vis[u] = ;
}
while(y--) {
scanf("%d", &v);
vis[v] = ;
}
for(i = ; i <= n; ++i){
if(g[i].size()) dfs(i);
}
for(i = ; i <= n; ++i)if(vis[i]==-){flag = ;break;}
if(flag) puts("YES");
else puts("NO");
}
return ;
}

62ms

hdu 5971 Wrestling Match的更多相关文章

  1. hdu 5971 Wrestling Match 判断能否构成二分图

    http://acm.hdu.edu.cn/showproblem.php?pid=5971 Wrestling Match Time Limit: 2000/1000 MS (Java/Others ...

  2. HDU 5971 Wrestling Match (二分图)

    题意:给定n个人的两两比赛,每个人要么是good 要么是bad,现在问你能不能唯一确定并且是合理的. 析:其实就是一个二分图染色,如果产生矛盾了就是不能,否则就是可以的. 代码如下: #pragma ...

  3. hdu 5971 Wrestling Match 二分图染色

    题目链接 题意 \(n\)人进行\(m\)场比赛,给定\(m\)场比赛的双方编号:再给定已知的为\(good\ player\)的\(x\)个人的编号,已知的为\(bad\ player\)的\(y\ ...

  4. HDU 5971"Wrestling Match"(二分图染色)

    传送门 •题意 给出 n 个人,m 场比赛: 这 m 场比赛,每一场比赛中的对决的两人,一个属于 "good player" 另一个属于 "bad player" ...

  5. A - Wrestling Match HDU - 5971

    Nowadays, at least one wrestling match is held every year in our country. There are a lot of people ...

  6. HDU 3277 Marriage Match III(二分+最大流)

    HDU 3277 Marriage Match III 题目链接 题意:n个女孩n个男孩,每一个女孩能够和一些男孩配对,此外还能够和k个随意的男孩配对.然后有些女孩是朋友,满足这个朋友圈里面的人.假设 ...

  7. HDU 3081 Marriage Match II(二分法+最大流量)

    HDU 3081 Marriage Match II pid=3081" target="_blank" style="">题目链接 题意:n个 ...

  8. HDU 3416 Marriage Match IV (最短路径,网络流,最大流)

    HDU 3416 Marriage Match IV (最短路径,网络流,最大流) Description Do not sincere non-interference. Like that sho ...

  9. HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)

    HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...

随机推荐

  1. Visual Studio 2013复制项目

    在当前解决方案下复制项目的步骤: 1. 在硬盘存放代码的目录下将整个文件拷贝一份,修改文件夹名字,改成新的项目名称, 然后修改 *.csproj文件,名字必须与新项目名一致. 2. 在解决方案上右键 ...

  2. git 自己创建了一个项目A,我的同事fork一个B,当我的项目更新的时候,怎么样在他fork的repo上进行相应的更新?

    先把B clone到本地 git clone B_REPOSITORY_URL 再cd到本地B的目录,把A作为一个remote加到本地的B中(一般命名为upstream) git remote add ...

  3. oracle 自动表分区

    Oracle 新功能自动分区: 实现代码: create table t_interval partition by range(created)//dba_objects 视图的一个字段 inter ...

  4. Shiro - 关于Realm

    之前在Authentication和Authorization中也提到Realm. 无论是身份验证还是权限验证,无论数据以什么方式存在,我们都需要访问一些数据并将其转换为Shiro可以识别的格式. 通 ...

  5. golang学习之select用法

    早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...

  6. Centos7 linux 安装 redis 遇到的几个问题

    环境:centos7 + redis 5.0  解决方案仅供参考,如不能解决问题,请查找请他方案.     1.不能编译没有GCC 编译工具 make报错: make[1]: [persist-set ...

  7. [javaEE] 三层架构案例-用户模块(二)

    使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...

  8. [javaEE] jsp入门

    Servlet写java代码很好,但是拼接html的时候,非常不方便 JSP可以在html中嵌套java代码,这样在展示的时候,就会比较方便 Tomcat帮我们把jsp的页面翻译成了Servlet去运 ...

  9. MySql5.5以上版本设置主从结构的例子

    为了实现读写分离,一般都需要先设置好mysql的主从结构,网上现有的mysql配置大都基于低版本,在5.5以上版本无法配置成功,所以参考了官方文档,写了这篇笔记. *主要参考Mysql 5.6的官方文 ...

  10. VBA将指定Excel表数据批量生成到另一个Excel表中,每个sheet表一行数据

    Sub AutoInputValNewExcel() Dim sh1, sh2 As Worksheet Dim ws1, ws2 As Workbook ) ) ).Sheets() iRows = ...