题目描述

根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立。 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍。

此委员会必须满足下列条件:

  • 每个党派都在委员会中恰有1个代表,
  • 如果2个代表彼此厌恶,则他们不能都属于委员会。

每个党在议会中有2个代表。代表从1编号到2n。 编号为2i-1和2i的代表属于第I个党派。

任务

写一程序:

  • 从文本文件读入党派的数量和关系不友好的代表对,
  • 计算决定建立和平委员会是否可能,若行,则列出委员会的成员表,
  • 结果写入文本文件。

输入格式

在文本文件的第一个行有2非负整数n和m。 他们各自表示:党派的数量n,1 < =n < =8000和不友好的代表对m,0 <=m <=20000。 在下面m行的每行为一对整数a,b,1<=a

输出格式

如果委员会不能创立,文本文件中应该包括单词NIE。若能够成立,文本文件SPO.OUT中应该包括n个从区间1到2n选出的整数,按升序写出,每行一个,这些数字为委员会中代表的编号。如果委员会能以多种方法形成,程序可以只写他们的某一个。

样例输入

3 2
1 3
2 4

样例输出

1
4
5 2-Sat裸题。。。
代码:
 #include<iostream>
#include<cstdio>
#include<cstring>
#define M 100010
using namespace std;
struct point{
int next,to;
}e[M<<];
int n,m,num,tot,cnt,top;
int head[M],dfn[M],st[M],low[M],co[M];
bool vis[M];
void add(int from,int to)
{
e[++num].next=head[from];
e[num].to=to;
head[from]=num;
}
void tarjan(int x)
{
low[x]=dfn[x]=++cnt;
st[++top]=x;
vis[x]=true;
for(int i=head[x];i;i=e[i].next)
{
int to=e[i].to;
if(!dfn[to])
{
tarjan(to);
low[x]=min(low[x],low[to]);
}
else if(vis[to]) low[x]=min(low[x],dfn[to]);
}
if(dfn[x]==low[x])
{
tot++;
while(st[top+]!=x)
{
co[st[top]]=tot;
vis[st[top]]=false;
top--;
}
}
}
bool two_sat()
{
for(int i=;i<=*n;i++)
if(!dfn[i])
tarjan(i);
for(int i=;i<=n;i++)
if(co[i*-]==co[i*])
return false;
return true;
}
int main()
{
//freopen("spo.in","r",stdin);
//freopen("spo.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int A,B,AA,BB;
scanf("%d%d",&A,&B);
if(A%==) AA=A-;
else AA=A+;
if(B%==) BB=B-;
else BB=B+;
add(AA,B); add(BB,A);
}
if(two_sat())
{
for(int i=;i<=n;i++)
printf("%d\n",co[i*-]>co[i*]?i*-:i*);
}
else printf("NIE");
return ;
}
												

最新文章

  1. Java基础学习小记--多态
  2. Bellman算法
  3. Log4Net简单使用
  4. 【POJ3481】【splay】Double Queue
  5. canvas新属性
  6. Java-Swing编程之对话框案例详解
  7. CSS文字不换行,溢出省略
  8. sublime text package control 被墙的解决办法
  9. aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】
  10. JShell脚本工具
  11. node express+socket.io实现聊天室
  12. 字体图标库 IcoMoon IconFont Font Awesome的使用
  13. JS中获取CSS样式的方法
  14. Hive快捷查询:不启用Mapreduce job启用Fetch task
  15. 浙大月赛ZOJ Monthly, August 2014
  16. META-INF下文件读取
  17. 使用级联分类器实现人脸检测(OpenCV自带的数据)
  18. spring boot:创建一个简单的web(maven web project)
  19. HDU 3577Fast Arrangement(线段树模板之区间增减更新 区间求和查询)
  20. Bootstrap--响应式显示图片信息列表

热门文章

  1. &quot;_dns_free_resource_record&quot;, referenced from:问题
  2. 桥梁模式(Bridge)
  3. 认识tornado(一)
  4. 将坐标转化为与X轴正半轴夹角模板
  5. iOS 百度地图获取当前地理位置
  6. SpringCloud落地实践
  7. Outlook自动回复功能无法使用
  8. ORA-08002: sequence TESTTABLE1_ID_SEQ.CURRVAL is not yet defined in this session (未完全解决)
  9. 【Linux】Ubuntu下录屏&amp;amp;&amp;amp;制作GIF
  10. Xamrin开发安卓笔记(二)