题意

有n个人,m场摔跤比赛,其中已确定x个好的选手,y个差的选手。 
问能否将每个人划分成好的选手或差的选手。

http://acm.hdu.edu.cn/showproblem.php?pid=5971

分析

二分图染色模板题

dfs染色先从已经确定的人开始染色与其相关的人,矛盾就 NO 
然后对于不确定的人,枚举染色,如果矛盾就是 NO 
如果最后还存在不确定的,那么就是 NO 
否则就是 YES

代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAX_N=1005;
 4 int n,color[MAX_N];
 5 vector<int> G[MAX_N];
 6 bool dfs(int v,int c)
 7 {
 8     color[v]=c;
 9     for(unsigned i=0;i<G[v].size();++i)
10     {
11         if(color[G[v][i]]==c)
12             return false;
13         if(color[G[v][i]]==0&&!dfs(G[v][i],-c))
14             return false;
15     }
16     return true;
17 }
18 void solve()
19 {
20     for(int i=1;i<=n;++i)
21         if(color[i]==-1)
22         {
23             cout<<"NO\n";
24             return;
25         }
26     for(int i=1;i<=n;++i)
27     {
28         if(color[i]==2&& !dfs(i,2))
29         {
30             cout<<"NO\n";
31             return;
32         }
33         if(color[i]==-2&& !dfs(i,-2))
34         {
35             cout<<"NO\n";
36             return;
37         }
38     }
39     for(int i=1;i<=n;++i)
40         if(color[i]==0)
41         {
42             if(!dfs(i,2))
43             {
44                 cout<<"NO\n";
45                 return;
46             }
47         }
48     cout<<"YES\n";
49 }
50 int main()
51 {
52     ios::sync_with_stdio(false);
53     int m,x,y;
54     while(cin>>n>>m>>x>>y)
55     {
56         int a,b;
57
58         for(int i=1;i<=n;++i)//清空数据
59             G[i].clear();
60         memset(color,-1,sizeof(color));
61
62         for(int i=1;i<=m;++i)
63         {
64             cin>>a>>b;
65             color[a]=0;
66             color[b]=0;
67             G[a].push_back(b);
68             G[b].push_back(a);
69         }
70         for(int i=1;i<=x;++i)
71         {
72             cin>>a;
73             color[a]=2;
74         }
75         for(int i=1;i<=y;++i)
76         {
77             cin>>b;
78             color[b]=-2;
79         }
80         solve();
81     }
82     return 0;
83 }

转载于:https://www.cnblogs.com/helloWR/p/10909094.html

【2016ACM/ICPC亚洲区大连站A】HDU - 5971 Wrestling Match 二分图染色相关推荐

  1. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

  2. 2016ACM/ICPC亚洲区大连站现场赛题解报告

    此文章可以使用目录功能哟↑(点击上方[+]) 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做 ...

  3. 2016ACM/ICPC亚洲区大连站-补题

    2016ACM/ICPC亚洲区大连站-补题 5971-Wrestling Match 题目隐藏条件:除去已经知道的好人和坏人,如果剩余的人恰好被分成两组,即便不知道这两组哪组是好人,也是输出YES 做 ...

  4. 【2016ACM/ICPC亚洲区大连站C】HDU - 5973 Game of Taking Stones 威佐夫博弈

    题意 给你两个石堆的石头数量,两个人轮流拿,两人轮流从任意一堆取至少一个或者从两堆取同样多的物品.问你先手获胜还是后手胜. http://acm.hdu.edu.cn/showproblem.php? ...

  5. 2016ACM/ICPC亚洲区大连站题解

    以下所有AC题解程序来自"仙客传奇"团队. AC题数:10/11 ABCDFHIJK A. Wrestling Match AC的C++语言程序: #include <ios ...

  6. 2016ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)

    目录 A Thickest Burger B Relative atomic mass C Recursive sequence · 矩阵快速幂 E Counting Cliques · 暴力 H G ...

  7. HDU 5952 Counting Cliques(2016ACM/ICPC亚洲区沈阳站-重现赛)

    题目分析 这道题看样子没有什么办法,主要就是有策略的暴力,因为每个点连接的点不超过20个,那么就可以直接进行暴力,但是这样会有很多重复,因此需要剪枝,具体情况就是每次搜过一个点之后就把这个点连接的所有 ...

  8. HDU Problem - 5971 Wrestling Match(染色)

    题目链接 Problem Description Nowadays, at least one wrestling match is held every year in our country. T ...

  9. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  10. HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)

    HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge Solution 我们考虑维护在环上的边的个数,答案就是总边数减去环上边数. 环的形态是这样的:(0,l),(0,l+1)...(0 ...

最新文章

  1. Linux 文件系统常用命令:cat命令
  2. 十二、八皇后问题(递归回溯)
  3. {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
  4. 容斥原理应用(求1~r中有多少个数与n互素)
  5. c++基础day03
  6. ubuntu11.10 samba服务器配置
  7. matlab 正则化表达式_MATLAB 正则表达式(一)(转)
  8. mysql添加一个字段(
  9. html语言考点,HTML知识点
  10. weblogic安装及部署
  11. 安装Windows刷机adb环境手册
  12. 弹性系数和线径的计算公式_弹簧计算公式
  13. HEER-Easing Embedding Learning by Comprehensive Transcription of Heterogeneous Information Networks
  14. Greenplum 6 磁盘配额管理工具“Diskquota”
  15. a non-fatal error occured whilst loading database modules
  16. 一张照片就能攻破人脸识别系统,人脸识别安全性亟需提高
  17. 用Python写随机密码生成
  18. sql server数据库卡问题排查
  19. html css齿轮滚动特效,纯CSS3实现的齿轮滚动动画
  20. THREEJS - 旋转中心调整

热门文章

  1. python图像处理库PIL高清晰保存缩放图片
  2. 利用HtmlAgilityPack插件写的一个抓取指定网页的图片 第一次写 很乱 随便看看就行...
  3. ​蔚来「能源云」和「领航换电」是有序充电甚至 V2G 的完美场景
  4. 《代码整洁之道》:这代码写的太烂了!这些重构的小技巧帮你告别你的“垃圾代码”!...
  5. Android 加载高清巨图,无需剪裁压缩
  6. 盘点互联网高薪职业岗位,看看字节跳动程序员怎么说
  7. win7系统怎样添加wifi连接到服务器,win7系统怎么设置无线网络连接
  8. 相亲旅游必备——决策树简单代码(numpy和sklearn)实现示例
  9. 积分清零规则的三种状态
  10. 不要停下来!八分音符酱!青年男女深夜频频鬼叫!!!