图论2-sat问题 HDU 3062
来源:互联网 发布:python怎么打开idle 编辑:程序博客网 时间:2024/06/05 20:26
模板题
#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <algorithm>using namespace std;const int MAXNODE = 2005;struct TwoSet {int n;vector<int> g[MAXNODE * 2];bool mark[MAXNODE * 2];int S[MAXNODE * 2], sn;void init(int tot) {n = tot * 2;for (int i = 0; i < n; i += 2) {g[i].clear();g[i^1].clear();}memset(mark, false, sizeof(mark));}void add_Edge(int u, int uval, int v, int vval) {u = u * 2 + uval;v = v * 2 + vval;g[u^1].push_back(v);g[v^1].push_back(u);}void delete_Edge(int u, int uval, int v, int vval) {u = u * 2 + uval;v = v * 2 + vval;g[u^1].pop_back();g[v^1].pop_back();}bool dfs(int u) {if (mark[u^1]) return false;if (mark[u]) return true;mark[u] = true;S[sn++] = u;for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (!dfs(v)) return false;}return true;}bool solve() {for (int i = 0; i < n; i += 2) {if (!mark[i] && !mark[i + 1]) {sn = 0;if (!dfs(i)){for (int j = 0; j < sn; j++)mark[S[j]] = false;sn = 0;if (!dfs(i + 1)) return false;}}}return true;}} gao;int n,m;int main(){while(~scanf("%d",&n)){gao.init(n);scanf("%d",&m);int u,v,a,b;while(m--){scanf("%d%d%d%d",&u,&v,&a,&b);gao.add_Edge(u,a,v,b);}printf("%s\n",gao.solve()?"YES":"NO");}return 0;}
0 0
- 图论2-sat问题 HDU 3062
- hdu 3062 2-SAT
- hdu 3062 (2-SAT)
- hdu 3062 2-sat
- hdu--3062(2-sat
- hdu 3062 party#2-sat
- HDU 3062 Party (2-SAT)
- HDU 3062 Party (2-SAT)
- hdu 3062 2-sat 水题
- hdu 3062 2-Sat入门
- HDU 3062 2-sat 裸题
- 【HDU】3062 Party 2-sat
- HDU 3062 Party(2-sat)
- HDU 3062 Party (2-sat)
- HDU 3062 Party 2-SAT
- HDU 3062 Party 2-SAT
- hdu 3062 2-SAT算法
- hdu 3062 (2-sat)
- 事物回滚与异常
- JAVASE之异常
- 统计svn上两个版本或一段时间内的代码修改行数
- 如何确定Kafka的分区数、key和consumer线程数
- org.springframework.beans.factory.NoSuchBeanDefinitionException:
- 图论2-sat问题 HDU 3062
- java语言实现插入排序法
- SSH-基础篇-Action
- Xcode8调试黑科技:Memory Graph实战解决闭包引用循环问题
- Intellij IDEA svn的使用记录
- Java的基本数据类型-布尔类型
- android 初始化init.rc语法介绍
- 工作量证明算法
- The First Day