POJ 3678 2-sat模板
来源:互联网 发布:纳贝调试软件 编辑:程序博客网 时间:2024/05/29 03:27
点击打开链接
题意:给定一些关系,然后结果给出,问你是否可以给0到n-1分配0或1使得所有关系成立
思路:2-sat的模板题,理论不多说了,然后就是根据给定的关系建边即可
#include <vector>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const ll INF=0x3f3f3f3f3f3f3f3fll;const int maxn=2010;int V;vector<int>G[maxn],rG[maxn],vs;bool used[maxn];int cmp[maxn];void add_edge(int from,int to){ G[from].push_back(to); rG[to].push_back(from);}void dfs(int v){ used[v]=1; for(unsigned int i=0;i<G[v].size();i++){ if(!used[G[v][i]]) dfs(G[v][i]); } vs.push_back(v);}void rdfs(int v,int k){ used[v]=1; cmp[v]=k; for(unsigned int i=0;i<rG[v].size();i++){ if(!used[rG[v][i]]) rdfs(rG[v][i],k); }}int scc(){ memset(used,0,sizeof(used)); vs.clear(); for(int v=0;v<2*V;v++){ if(!used[v]) dfs(v); } memset(used,0,sizeof(used)); int sum=0; for(int i=vs.size()-1;i>=0;i--){ if(!used[vs[i]]) rdfs(vs[i],sum++); } return sum;}int main(){ int m,op,u,v; char ch[10]; while(scanf("%d%d",&V,&m)!=-1){ for(int i=0;i<maxn;i++) G[i].clear(),rG[i].clear(); for(int i=0;i<m;i++){ scanf("%d%d%d%s",&u,&v,&op,ch); if(ch[0]=='A'){ if(op==1){ add_edge(u+V,u);add_edge(v+V,v); }else add_edge(u,v+V),add_edge(v,u+V); }else if(ch[0]=='O'){ if(op==1){ add_edge(u+V,v);add_edge(v+V,u); }else{ add_edge(u,u+V);add_edge(v,v+V); } }else{ if(op==1){ add_edge(u,v+V);add_edge(v,u+V); add_edge(u+V,v);add_edge(v+V,u); }else{ add_edge(u,v);add_edge(v,u); add_edge(u+V,v+V);add_edge(v+V,u+V); } } } scc(); int flag=0; for(int i=0;i<V;i++) if(cmp[i]==cmp[i+V]) flag=1; if(flag) printf("NO\n"); else printf("YES\n"); } return 0;}
0 0
- POJ 3678 2-sat模板
- POJ 3678 OO版2-SAT模板
- POJ 3678 KatuPuzzle 2-SAT模板题
- POJ 3678 Katu Puzzle(2-sat 模板题)
- 2-sat POJ 3678
- 【2-SAT】POJ 3678
- POJ 3678 2-sat
- POJ 3678 2-SAT
- POJ 3678 2-sat
- poj 3678 2-sat
- poj 3678 2-sat
- poj 3683 2SAT入门+挑战模板
- POJ 3678 2-sat裸题
- POJ-3678(2-SAT)
- poj-3678(2-SAT)
- POJ 3678 2SAT总结
- poj 3648 2-sat 输出任意一组解模板
- 完整版2-sat模板
- Android 微信分享开发问题汇总
- JAR包的JDK版本查看与设置
- [普及]NOIP 2014 螺旋矩阵
- 那些年,追过的开源软件和技术
- AES-NI
- POJ 3678 2-sat模板
- 通过连接池操作 理解装饰者设计模式 自我理解
- Android Studio导入github下载的工程
- 浙大pta: Build A Binary Search Tree
- NYOJ - 20 - 吝啬的国度(无根树转有根树)
- Shiro源码分析 -- Subject.isPermitted(permission)已登陆用户判断是否具有某权限
- 软件流程图编写软件
- 提高mapreduce性能的七点建议
- javascript是单线程的吗?