博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 1391 Astronauts(2-SAT + 输出方案)
阅读量:4073 次
发布时间:2019-05-25

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

【】

【题目大意】

有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员。

现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才能去,C站都可以去。

有m对宇航员相互讨厌,不能让他们在同一个空间站工作。

输出每个宇航员应分配到哪个空间站,如果没有则输出No solution.

【思路】

对于每一个宇航员,他都只有两个地方能去:C或者非C(如果是年轻的是B,老练的是A), 所以是二选一的,可以想到是2-SAT判定问题。

建边时,分好情况加边即可。然后就是套模板了。

【代码】

#include
#include
#include
#include
#define WHITE -1#define RED 1#define BLUE 0using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 100010;const int VN = MAXN*2;const int EN = VN*5;int n, m;int age[MAXN];int sum;struct Graph{ int size, head[VN]; struct{int u, v, next; }E[EN]; void init(){size=0; memset(head, -1, sizeof(head)); } void addEdge(int u, int v){ E[size].u = u; E[size].v = v; E[size].next = head[u]; head[u] = size++; }}g, g1;class Tow_Sat{public: bool check(){ scc(); for(int i=0; i
que; memset(color, WHITE, sizeof(color)); for(int i=1; i<=bcnt; ++i) if(!indeg[i]) que.push(i); while(!que.empty()){ int u = que.front(); que.pop(); if(color[u] != WHITE) continue; color[u] = RED; color[opp[u]] = BLUE; for(int e=g1.head[u]; e!=-1; e=g1.E[e].next){ int v=g1.E[e].v; if(--indeg[v] == 0) que.push(v); } } // output for(int i=0; i
= sum){//小,大 g.addEdge(a+n, b); g.addEdge(b+n, a); }else if(age[a]*n >= sum && age[b]*n < sum){//大,小 g.addEdge(a+n, b); g.addEdge(b+n, a); }else{ // 大,大 g.addEdge(a, b+n); g.addEdge(a+n, b); g.addEdge(b, a+n); g.addEdge(b+n, a); } } if(!sat.check()) puts("No solution."); else sat.toposort(); } return 0;}

转载地址:http://tpzni.baihongyu.com/

你可能感兴趣的文章
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>
《软件体系结构》 练习题
查看>>
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>