hdu 1814
来源:互联网 发布:wifi广告路由器软件 编辑:程序博客网 时间:2024/05/17 23:28
对着题解脑子都大了,看了一圈正解是 2-SAT 没脑子思考暂时,就写了一个暴力
水过了……不过这个暴力应该是有问题的
先写个错误的当记号(以后回来学)
#include <iostream>#include <cstdio>#include <vector>#include <string>#include <cstring>#include <map>#include <queue>#include <stack>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;const int maxn=40010;vector<int>G[maxn];int vis[maxn],n,cnt;int S[maxn];bool dfs(int now){ // printf("1.now =%d\n",now); if (vis[now]==1) return true; if (vis[now]==0) return false; vis[now]=1; vis[now^1]=0; // printf("2.now= %d\n ",now); S[cnt++]=now; for (int i=0;i<G[now].size();i++) if (!dfs(G[now][i])) return false;return true;}bool cz(){ memset(vis,-1,sizeof(vis)); for (int i=0;i<n;i+=2) if (vis[i]==-1 && vis[i^1]==-1)//前面构建的协会忽略了这个党派,进行重组,对栈清0考虑到for是顺序进行,这样不能保证前面的党派一定被选择,应该有问题? { cnt=0; // printf("?=%d",i); if (!dfs(i))//把自己的放进去的行为失败了,对栈清0 { while (cnt){ vis[S[--cnt]]=-1; vis[S[cnt]^1]=-1; } if (!dfs(i^1)) return false; } } return true;}int main(){//attention!最初的n为党派数量,表示人的时候要*2;//一个协会需要每个党派都有一个人在,问是否存在这样的协会//一个党派有两个候选人,他们互相是竞争关系,有你没我,有我没他//不同党派中的人有私人感情仇视,要分离他们,打造一个和谐的协会//关于^ 奇数-1 偶数+1 也就是说 0 1 || 2 3|| 被这样分组,所以对每个数-1,更容易进行分组//放的G表示不是不喜欢看到的人------>按照题意,不喜欢的会被输入,但是不同的党派又必须有人,所以刨去不喜欢的就是不是不喜欢的必须存在的,需要判断必须存在的人是否存在//dfs 判断这个人 在协会里 true 不在协会里 false//如果他和他的竞争对手 都不在 把自己放进去//vis 表示1 选中 0 未选中 -1这个党派未被选择int m,i,u,v; while (~scanf("%d%d",&n,&m)) { n=n*2; for (i=0;i<n;i++) G[i].clear(); cnt=0; while (m--) { scanf("%d%d",&u,&v); u--; v--; G[u].push_back(v^1); G[v].push_back(u^1); } if (cz()) { for (i=0;i<n;i++) if (vis[i]==1) printf("%d\n",i+1); } else printf("NIE\n"); } return 0;}
阅读全文
0 0
- hdu 1814
- hdu 1814
- HDU 1814 Two_Sat
- hdu 1814 Peaceful Commission
- hdu-1814(2-SAT)
- HDU 1814 2-SAT
- HDU 1814 Peaceful Commission
- HDU 1814 Peaceful Commission
- HDU-1814-TwoSAT
- HDU 1814(染色)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- Codeforces Round #202 B:Color the Fence
- 一入侯门深似海,不破楼兰终不回
- 文本四则运算解析工具与浮点数小数精度保留工具
- NIO的基本应用
- 【NOIP2015模拟11.3晚】喝喝喝
- hdu 1814
- 系统分布式情况下最终一致性方案梳理
- 什么是锚文本?
- int socket(int domain, int type, int protocol)参数详解
- 设置Android APP 的图标和软件名
- 一个关于fork()的面试题
- MySQL ERROR 1366(傻瓜解决方法)
- 陈岷:守护文物已成为责任
- Linux 设备驱动之 UIO 机制(测试 UIO 机制)