【HDOJ5971】Wrestling Match(二分图,并查集)
2024-09-08 03:51:14
题意:有n个人,m场比赛,x个人为good player,y个人为bad player,
每场比赛两个人分分别为good和bad,问good和bad是否会冲突
1 ≤ N≤ 1000,1 ≤M ≤ 10000
思路:二分图
根据已有的点暴力遍历,判有没有冲突即可
并查集也能写,队友写的搜索
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>
#include <limits.h>
#include <string>
#include <iostream>
#include <queue>
#include <math.h>
#include <map>
using namespace std;
typedef long long int lint; const int MAXN = 1e3 + ;
const int MAXM = 1e4 + ; vector<int> g[MAXN];
queue<int> a,b; int n,m,x,y;
int color[MAXN]; void init(){
memset(color,-,sizeof(color));
for(int i = ; i <= n; ++i){ g[i].clear();}
while(!a.empty()){ a.pop();}
while(!b.empty()){ b.pop();}
} bool solve(){
while(!a.empty() || !b.empty()){
while(!a.empty()){
int now = a.front(); a.pop();
for(int i = ; i < g[now].size(); ++i){
if(color[g[now][i]] == -){
color[g[now][i]] = ; b.push(g[now][i]);
}else if(color[g[now][i]] == ){
return false;
}
}
}
while(!b.empty()){
int now = b.front(); b.pop();
for(int i = ; i < g[now].size(); ++i){
if(color[g[now][i]] == -){
color[g[now][i]] = ; a.push(g[now][i]);
}else if(color[g[now][i]] == ){
return false;
}
}
}
}
return true;
} int main(){
while(scanf("%d%d%d%d",&n,&m,&x,&y)!=EOF){
init();
for(int i = ; i <= m; ++i){
int u,v; scanf("%d%d",&u,&v);
g[u].push_back(v); g[v].push_back(u);
}
for(int i = ; i <= x; ++i){
int num; scanf("%d",&num); a.push(num); color[num] = ;
}
for(int i = ; i <= y; ++i){
int num; scanf("%d",&num); b.push(num); color[num] = ;
}
if(!solve()){
printf("NO\n"); continue;
}
bool flag = true;
for(int i = ; i <= n; ++i){
if(color[i] == - && g[i].size() != ){
a.push(i);
if(!solve()){
flag = false; break;
}
}else if(color[i] == - && g[i].size() == ){
flag = false; break;
}
}
if(!flag){
printf("NO\n"); continue;
}else{
printf("YES\n"); continue;
}
}
return ;
}
最新文章
- eclipse中Maven运行时报错: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
- Atitit Atitit 图像处理之&#160;&#160;Oilpaint油画滤镜 水彩画 源码实现
- 内核函数KiFastCallEntry
- Mac电脑AndroidStudio使用SVN进行版本控制
- [转载]深入理解JAVA的接口和抽象类
- react-native 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
- CoreLocation MKMapView
- VS2008资源问题解决方法
- Catalog和Schema
- 常用的css
- go服务端----使用dotweb框架搭建简易服务
- 【Beta阶段】测试与发布
- 使用jQuery的一些建议
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
- 使用CXF做简单的WebService例子
- 你不知道的CSS单位
- ECShop全系列版本远程代码执行高危漏洞分析+实战提权
- \Temporary ASP.NET Files\root\文件不断增长,如何处理?
- Mysql表类型(存储引擎)的比较
- 阿里云OSS 中文名称地址不对
热门文章
- IDEA设置每次打开重新选择项目
- 正确适配苹果ATS审核要求的姿势
- 配置Xcode的Device Orientation、AppIcon、LaunchImage
- Python3 简单封装 sqlite3 - SimpleToolSql
- How to Install Zabbix Server on Centos6.7
- 为PHPcms扩展json采集
- 使用laravel框架的eloquent\DB模型连接多个数据库
- GoF23种设计模式之行为型模式之访问者模式
- redis列表,字典,管道,vue安装,创建项目
- vagrant 安装ubuntu12.04 64 bit