题目链接

建边不说了。对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾

Tarjan也用不到

//964kb	76ms
#include <cstdio>
#include <cstring>
#include <algorithm>
const int N=2005,M=16005; int n,m,Enum,H[N],nxt[M],to[M],conf[N];//conflict
bool vis[N];
char ans[N]; inline void AddEdge(int u,int v){
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
}
bool DFS(int x)
{
// if(vis[x+delta*n]) return 0;//WA:由i+n集合会到j集合 我怎么想的。。
if(vis[conf[x]]) return 0;
vis[x]=1;
for(int i=H[x]; i; i=nxt[i])
if(!vis[to[i]])
if(!DFS(to[i])) return 0;
return 1;
}
//void dfs(int x)//slow
//{
// vis[x]=1;
// for(int i=H[x]; i; i=nxt[i])
// if(!vis[to[i]]) dfs(to[i]);
//}
//bool DFS(int x,int delta)
//{
// dfs(x);
// for(int i=1; i<=n; ++i)
// if(vis[i]&&vis[i+n]) return 0;
// return 1;
//} int main()
{
scanf("%d%d",&n,&m);
int a,c; char b[3],d[3];
for(int i=1; i<=m; ++i)
{
scanf("%d%s%d%s",&a,b,&c,d);
if(b[0]=='Y')//i:false(N) i+n:true(Y)
if(d[0]=='Y') AddEdge(a,c+n),AddEdge(c,a+n);
else AddEdge(a,c),AddEdge(c+n,a+n);
else if(b[0]=='N')
if(d[0]=='Y') AddEdge(a+n,c+n),AddEdge(c,a);
else AddEdge(a+n,c),AddEdge(c+n,a);
}
for(int i=1; i<=n; ++i) conf[i]=i+n,conf[i+n]=i;
for(int r1,r2,i=1; i<=n; ++i)
{
memset(vis,0,sizeof vis), r1=DFS(i);
memset(vis,0,sizeof vis), r2=DFS(i+n);
if(!r1&&!r2) {printf("IMPOSSIBLE"); return 0;}
else if(r1&&r2) ans[i]='?';
else if(r1) ans[i]='N';
else ans[i]='Y';
}
ans[n+1]='\0', printf("%s",ans+1); return 0;
}

BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)的更多相关文章

  1. BZOJ 2199: [Usaco2011 Jan]奶牛议会

    2199: [Usaco2011 Jan]奶牛议会 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 375  Solved: 241[Submit][S ...

  2. bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat

    noip之前学的内容了,看到题竟然忘了怎么建图了,复习一下. 2-sat 大概是对于每个元素,它有0和1两种选择,必须选一个但不能同时选.这之间又有一些二元关系,比如x&y=1等等... 先把 ...

  3. BZOJ 2199: [Usaco2011 Jan]奶牛议会 [2-SAT 判断解]

    http://www.lydsy.com/JudgeOnline/problem.php?id=2199 题意:裸的2-SAT,但是问每个变量在所有解中是只能为真还是只能为假还是既可以为真又可以为假 ...

  4. bzoj 2199: [Usaco2011 Jan]奶牛议会【2-SAT】

    好久没写2-SAT了啊,还以为是网络流 设点x为选,x'为不选,因为一头牛至少要满足一个条件,所以对于牛条件的两个点,选了一个不符合的点,就要选另一个符合的点,这样连两条边 然后枚举所有议案的选和不选 ...

  5. 2199: [Usaco2011 Jan]奶牛议会 2-sat

    链接 https://www.luogu.org/problemnew/show/P3007 https://www.lydsy.com/JudgeOnline/problem.php?id=2199 ...

  6. 【BZOJ2199】[Usaco2011 Jan]奶牛议会 2-SAT

    [BZOJ2199][Usaco2011 Jan]奶牛议会 Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要 ...

  7. 【BZOJ2199】 [Usaco2011 Jan]奶牛议会

    Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 (1 & ...

  8. BZOJ2199: [Usaco2011 Jan]奶牛议会(2-SAT)

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 559  Solved: 360[Submit][Status][Discuss] Descriptio ...

  9. BZOJ2199[Usaco2011 Jan]奶牛议会——2-SAT+tarjan缩点

    题目描述 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 (1 <= M ...

随机推荐

  1. 用secureCRT操作ubuntu终端

    用secureCRT操作ubuntu终端 ubuntu下先安装ssh windows下win+R再输入ubuntu的ip地址   ubuntu 检测端口号的命令 netstat -antp   下载到 ...

  2. 002_mtr_a network diagnostic tool

    一. mtr combines the functionality of the traceroute and ping programs in a single network diagnostic ...

  3. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy 下载haproxy1.6.2.tar.gz下载地址:http://www.haproxy.org/download/1. ...

  4. pyspark遇到报错:_PYSPARK_DRIVER_CONN_INFO_PATH

    1.  环境 : centos,启动pyspark,执行如下python命令: import pyspark from pyspark import SparkContext from pyspark ...

  5. selenium和pyquery抓取异步加载数据

    安装selenium和pyquery 打开命令行输入: pip install selenium pip install pyquery chromedriver的下载地址如下: http://chr ...

  6. .net core定时任务

    1.HangFire HangFire官网 Hangfire项目实践分享 :  讲解的比较详细 2.Quartz.NET https://www.cnblogs.com/best/p/7658573. ...

  7. OCM_第四天课程:Section2 —》GC 的安装和配置

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  8. C 长字符串换行方法

    C中字符串有时候会出现很长的情况,如果不换行书写查看起来很不方便. 长字符串拆分成多行处理也是C规范的一部分. 方法1. 利用双引号" " ,将长字符串分成多个子串换行,C会自动无 ...

  9. XHR简介

    在XHR诞生前,网页要获取客户端和服务器的任何状态更新,都需要刷新一次,在XHR诞生后就可以完全通过JS代码异步实现这一过程.XHR的诞生也使最初的网页制作转换为开发交互应用,拉开了WEB2.0的序幕 ...

  10. pytest六:parametrize-参数化

    pytest.mark.parametrize 装饰器可以实现测试用例参数化. 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.pa ...