博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-1814(2-sat)
阅读量:4670 次
发布时间:2019-06-09

本文共 817 字,大约阅读时间需要 2 分钟。

题意:给你n个组,m条规则,每组有俩个人,这两个人不能同时出现,然后m条规则代表着有两个人,这两个人也不能同时出现,问你是否存在每组都能出现一人的选择方案

解题思路:因为这个需要字典序输出,所以只能用暴力的方法解决,如果x,y在同一条规则里面,那么建立一条边由x指向和y同一组的另一个人,y也这样做,然后开始暴力dfs

代码:

#include
#include
#include
#include
#include
#include
#define oth(x) (x%2==0?x-1:x+1)using namespace std;const int maxn=20050;int n,m,cnt;bool mark[maxn];vector
e[maxn];int ans[maxn];bool dfs(int x){ if(mark[oth(x)]) return false; if(mark[x]) return true; mark[x]=true; ans[++cnt]=x; for(int i=0;i
>x>>y; e[x].push_back(oth(y)); e[y].push_back(oth(x)); } if(twosat()) { for(int i=1;i<=n;i+=2) { if(mark[i]) printf("%d\n",i); else printf("%d\n",i+1); } } else printf("NIE\n"); }}

  

转载于:https://www.cnblogs.com/huangdao/p/9891058.html

你可能感兴趣的文章
国内5家云服务厂商 HTTPS 安全性测试横向对比
查看>>
how to control project
查看>>
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
Python入门学习笔记4:他人的博客及他人的学习思路
查看>>
webstorm里直接调用命令行
查看>>
关联规则算法之FP growth算法
查看>>
对数组序列进行洗牌
查看>>
决策树
查看>>
团队作业
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
win7,Ubuntu 12.04 双系统修改启动项顺序三方法
查看>>
python--列表推导式和生成表达式
查看>>
P - Psychos in a Line 单调队列
查看>>
POJ 2653 Pick-up sticks(计算几何)
查看>>
大型网站高并发的架构演变图-摘自网络
查看>>
8丶运行及总结
查看>>
Unity获取手机的电量时间
查看>>
Spring框架:Spring容器具体解释
查看>>
MongoDB 3.2 从安装到使用。
查看>>