HDU5971 Wrestling Match(二分图染色)
来源:互联网 发布:sql给表添加元素 编辑:程序博客网 时间:2024/05/10 07:15
题意: 给出比赛的人的标号, 以及x个好人y个坏人。询问是否能判断他是一个好人或者坏人。 给出的关系是否不存在矛盾,并且没有既是好人又是坏人。
思路:
训练的时候这题理解错了,一直没过。 补题发现可以是多个连通块,就是说可以分为m堆,只要每个堆里不存在矛盾关系,且每个人都出现过就可以。
#include <cstdio>#include <vector>#include <cstring>using namespace std;const int maxn=10005;int go[maxn];int vis[maxn];int col[maxn];int bad[maxn];vector<int >vec[maxn];int dfs(int u){ go[u]=1; for(int i=0;i<vec[u].size();i++) { int v=vec[u][i]; if(!col[v] &&!bad[v] ) { col[v]=!col[u]; if(!dfs(v)) return 0; } else { if(col[v]==col[u]) return 0; } } return 1;}int main(){ int n,m,x,y; while(~scanf("%d%d%d%d",&n,&m,&x,&y)) { for(int i=0;i<=n;i++) vec[i].clear(); memset(bad,0,sizeof(bad)); memset(col,0,sizeof(col)); memset(go,0,sizeof(go)); memset(vis,0,sizeof(vis)); for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); vec[u].push_back(v); vec[v].push_back(u); vis[u]=vis[v]=1; } for(int i=1;i<=x;i++) { int u; scanf("%d",&u); vis[u]=col[u]=1; } for(int i=1;i<=y;i++) { int u; scanf("%d",&u); vis[u]=1; bad[u]=1; col[u]=0; } int cnt=0; for(int i=1;i<=n;i++) { if(vis[i]) cnt++; } if(cnt<n){printf("NO\n");} else { int yes=1; for(int i=1;yes&&i<=n;i++) { if(go[i]) continue; if(!dfs(i)) { yes=0; } } if(yes) printf("YES\n"); else printf("NO\n"); } } return 0;}
0 0
- HDU5971 Wrestling Match(二分图染色)
- HDU5971 Wrestling Match(二分图的判断)
- hdu5971 Wrestling Match(染色法判二分) 2016ACM/ICPC亚洲区大连站
- hdu5971 Wrestling Match (判断是否为二分图)
- hdu5917——Wrestling Match(二分图染色)
- HDU 5971 Wrestling Match(二分图染色)
- Wrestling Match【DFS+二分图染色】
- HDU5971 Wrestling Match
- Wrestling Match HDU5971
- hdu5971 Wrestling Match
- hdu5971——Wrestling Match(以二分图判定为主要思路的多种搞法)
- HDU 5971 Wrestling Match(染色法二分图 OR 并查集)
- 【HDU】5971-Wrestling Match 二分染色
- HDOJ 5971 Wrestling Match【2016大连现场】【dfs二分染色】
- HDU 5971 Wrestling Match(染色体法判断二分图)
- HDU 5971 Wrestling Match (二分图匹配)
- HDU 5971 Wrestling Match(二分图着色)
- hdu 5971 Wrestling Match(二分图判断)
- SQLite的性能和限制
- Android 5.0新控件 Tablayout | 导航栏 介绍及使用详情
- S110_SoftDevice_Specification_2.0 学习笔记
- Watson Explorer 入门(8):测试 UIMA 管道
- Ceph初始安装OSD时使用独立磁盘的问题1
- HDU5971 Wrestling Match(二分图染色)
- windows下使用IDA远程调试linux(ubuntu)下编译的程序
- 一个程序在计算机中到底是如何运行的?
- os.system路径存中有空格
- ASP.NET基本控件FileUpload上传控件
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- adt编译和candle编译错误解决
- chrome 开发者工具学习
- 一个简单的方法实现购物车小球动画