博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1814 Peaceful Commission 2-sat
阅读量:4355 次
发布时间:2019-06-07

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

hdu1814 Peaceful Commission

链接

emm,三个链接,三个都不同

随便做
字典序最小
求合法方案数

思路

loj是任意一组解,直接跑tarjan然后判。

hdu是求最小字典序的2-sat解,真的是码力弱的要死呀。
只有O(N*M)的dfs复杂度能做。
如果不会2-sat的看

代码

#include 
using namespace std;const int N=1e5+7;int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1; for(;s<='9'&&s>='0';s=getchar()) x=x*10+s-'0'; return x*f;}int n,m;struct node { int v,nxt;}e[N];int head[N],tot;void add(int u,int v) {// cout<
<<" "<
<<"\n"; e[++tot].v=v; e[tot].nxt=head[u]; head[u]=tot;}int stak[N],top,vis[N];bool dfs(int u) { if(vis[u]) return 1; if(vis[u^1]) return 0; vis[u]=1; stak[++top]=u; for(int i=head[u];i;i=e[i].nxt) { int v=e[i].v; if(!dfs(v)) return 0; } return 1;}void clear() { memset(head,0,sizeof(head)); memset(vis,0,sizeof(vis)); tot=0;}int main() {// freopen("a.in","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { clear(); for(int i=1;i<=m;++i) { int x=read()-1,y=read()-1; add(x,y^1); add(y,x^1); } int flag=0; for(int i=0;i

转载于:https://www.cnblogs.com/dsrdsr/p/10467366.html

你可能感兴趣的文章
lambda匿名函数
查看>>
js常用方法
查看>>
建造者模式
查看>>
Spring入门教程:通过MyEclipse开发第一个Spring项目
查看>>
【转】你可能不知道的Shell
查看>>
廖雪峰Java1-2程序基础-1基本结构
查看>>
golang下的grpc
查看>>
1. 自动化运维系列之Cobbler自动装机
查看>>
[深度思考]·为什么CNN是同步(并行)而RNN是异步(串行)的呢?
查看>>
一键GHOST使用图文教程
查看>>
GNUPlot绘制曲线
查看>>
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
查看>>
Maven 入门
查看>>
20171107_Python学习四周二次课
查看>>
Orchard源码分析(4.1):Orchard.Environment.CollectionOrderModule类
查看>>
leetcode-109-有序链表转二叉搜索树
查看>>
WebView与 JS 交互方式
查看>>
中小公司统一用户认证方案
查看>>
【SDUT 3038】迷之博弈
查看>>
2014阿里实习生面试题——mysql如何实现的索引
查看>>