LA-3713-TwoSAT
来源:互联网 发布:芒果tv mac版下载 编辑:程序博客网 时间:2024/05/17 08:27
题目大意:有ABC三个任务需要分配给n个宇航员,任务C没有限制,年龄大于等于平均年龄的可以分配A任务,否则是B任务,有m对宇航员互相讨厌,他们不能顾分配相同的方案,问是否可以找出一种方案。
题目解析:如果相互讨厌的话,那么肯定不能够同时分配C,并且不能分配A和B,如果一个A一个B则不需要考虑;
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<vector>#include<stack>using namespace std;const int maxn=200010;const int maxm = 100010;int first[maxn]; int vv[maxm*4],nxt[maxm*4],S[maxm*4]; int e,c,n,m; bool vis[maxn]; void addedge(int u,int v) { vv[e] = v; nxt[e] = first[u]; first[u] = e++; } bool dfs(int u) { if(vis[u^1]) return 0; if(vis[u]) return 1; vis[u] = 1; S[c++] = u; for(int i = first[u];i != -1;i = nxt[i]) { int v = vv[i]; if(!dfs(v)) return false; } return true; } bool Judge() { for(int i = 0;i < n*2;i+=2) { if(!vis[i] && !vis[i+1]) { c = 0; if(!dfs(i)) { while(c > 0) vis[S[--c]] = 0; if(!dfs(i+1)) return false; } } } return true; } int old[maxn],eld[maxn]; int main(){while(scanf("%d%d",&n,&m)!=EOF&&(n+m)){memset(first,-1,sizeof(first));e=0;memset(vis,0,sizeof(vis));int sum=0;for(int i=0;i<n;i++){scanf("%d",&old[i]);sum+=old[i];}for(int i=0;i<n;i++)eld[i]=old[i]*n>=sum?1:0;for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);u--;v--;addedge(2*u+1,2*v);addedge(2*v+1,2*u);if(eld[u]==eld[v])addedge(2*u,2*v+1),addedge(2*v,2*u+1);} if(Judge()){for(int i=0;i<n;i++){if(vis[2*i+1]==1)printf("C\n");else if(eld[i])printf("A\n");else printf("B\n");}}else printf("No solution.\n");}return 0;}
阅读全文
0 0
- LA-3713-TwoSAT
- LA-3211-TwoSAT,二分
- TwoSat
- TwoSAT模版(LRJ)
- hdu 4751(twosat)
- hdu 3622 (twosat)
- HDU-1814-TwoSAT
- POJ-3207-TwoSAT
- LA 3713 Astronauts
- uva 11294 - Wedding(TwoSAT)
- 2017/4/15 Twosat介绍
- la la la, la la la
- LA 3713 - Astronauts 2-SAT
- LA 3713 Astronauts
- LA 3713 Astronauts(2-SAT)
- UVALive 3211 Now or later 二分+Twosat
- BZOJ 1997: [Hnoi2010]Planar 平面图判定,TWOSAT
- uva 1086 - The Ministers' Major Mess(TwoSat)
- 黑盒测试(功能测试)
- springboot之AOP配置
- Golang教程:(十五)指针
- VMWare启动虚拟机系统时,出现“内部错误”的解决办法
- TensorFlow保存和加载训练模型
- LA-3713-TwoSAT
- 以上为Python3.*及更早之前的方式,最新Pyhon3.*的调用方式: def md5Encode(str): import hashlib #参数必须是byte
- [Python] python-ldap installation and usage notes
- 【二叉树】指定深度添加一层节点【623. Add One Row to Tree】
- BSS 未初始化段
- 1. Two Sum
- 乐观锁与悲观锁
- 在Cocos2d-Lua中使用ProtoBuf (Xcode配置方法)
- 面向对象和面向过程有什么区别