C++之路进阶——bzoj2199(奶牛议会)
F.A.Qs | Home | Discuss | ProblemSet | Status | Ranklist | Contest | ModifyUser gryz2016 | Logout | 捐赠本站 |
---|
2199: [Usaco2011 Jan]奶牛议会
Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 258 Solved: 162
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 Y 2 N
1 N 2 N
1 Y 3 Y
1 Y 2 Y
Sample Output
HINT
Source
题解:
2-set问题,Y和N都考虑一下,最后check一下。
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 10000 using namespace std; inline int read()
{
int x=;
char ch=getchar();
while (ch>''||ch<'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x;
} int get()
{
int x=read();char c=getchar();
while(c!='Y'&&c!='N')c=getchar();
if(c=='Y')x=x*-;
else x=x*;
return x;
} struct ss
{
int to;
int next;
}e[maxn]; int head[maxn],n,m,ans[maxn],cnt;
bool kg[maxn];
char ch[]={'?','N','Y'};
int insert(int u,int v)
{
e[++cnt].to=v; e[cnt].next=head[u]; head[u]=cnt;
} void dfs(int x)
{
kg[x]=;
for (int i=head[x];i;i=e[i].next)
if (!kg[e[i].to]) dfs(e[i].to);
} bool check(int x)
{
memset(kg,,sizeof(kg));
dfs(x);
for (int i=;i<=n;i++)
if (kg[*i]&&kg[*i-]) return ;
return ;
} int main()
{
n=read();
m=read();
for (int i=;i<=m;i++)
{
int x=get(),xp;
int y=get(),yp;
if (x%==) xp=x--;
else xp=x++;
if (y%==) yp=y--;
else yp=y++;
insert(xp,y);
insert(yp,x);
}
for (int i=;i<=n;i++)
{
bool p=check(*i);
bool q=check(*i-);
if(!p&&!q){printf("IMPOSSIBLE");return ;}
else if(p&&q)ans[i]=;
else if(!p)ans[i]=;
else ans[i]=;
}
for(int i=;i<=n;i++)
printf("%c",ch[ans[i]]);
return ;
}
C++之路进阶——bzoj2199(奶牛议会)的更多相关文章
- BZOJ2199 奶牛议会 【2-sat】
BZOJ2199 奶牛议会 Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以"每头牛 都可以获得自己想要的"为原则, ...
- 【BZOJ2199】[Usaco2011 Jan]奶牛议会 2-SAT
[BZOJ2199][Usaco2011 Jan]奶牛议会 Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要 ...
- 【BZOJ2199】 [Usaco2011 Jan]奶牛议会
Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 (1 & ...
- BZOJ2199: [Usaco2011 Jan]奶牛议会(2-SAT)
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 559 Solved: 360[Submit][Status][Discuss] Descriptio ...
- BZOJ2199[Usaco2011 Jan]奶牛议会——2-SAT+tarjan缩点
题目描述 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 (1 <= M ...
- BZOJ 2199: [Usaco2011 Jan]奶牛议会
2199: [Usaco2011 Jan]奶牛议会 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 375 Solved: 241[Submit][S ...
- 2-set奶牛议会
Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 (1 & ...
- 【BZOJ-2199】奶牛议会
链接: BZOJ-2199 题意: 给出 \(n(1\leq n\leq 1000)\) 个点,\(m(1\leq m\leq 4000)\) 个形如:"点 \(a\) 取 \(ca\) 或 ...
- BZOJ2199: [Usaco2011 Jan]奶牛议会
趁此机会学了一下2-SAT. 以前的2-SAT都是用并查集写的,只能应用于极小的一部分情况,这次学了一正式的2-SAT,是用一张有向图来表示其依赖关系. 2-SAT的介绍参见刘汝佳<训练指南&g ...
随机推荐
- 【转】javascript 中that的含义示例介绍
var that = this;,这代表什么意思呢?this代表的是当前对象,var that=this就是将当前的this对象复制一份到that变量中,下面为大家介绍这样做有什么意义 你可能会发现别 ...
- sql 语句查询练习题
1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class from student 2. 查询教师所有的单位即不重复的Depart列 ...
- js解析Json字符串的方法
要把一个xml字符串转(“1,2,3,4,5,6,7,8,1,2”)换成数组的形式,每个值都应该是number类型的,想当然的就用了split方法,结果...问题来了,服务器要求数组的值是数字,而 ...
- c signal
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全 ...
- Qt StyleSheet皮肤(黑色,比较好看,而且很全)
使用方式如下 //设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/imag ...
- Ajax返回中文乱码问题(未解决)
(未解决) 暂时使用办法:改用返回Map<String,String>形式的返回值,在ajax中获取json形式的数据.
- MSVC和MinGW组件dll相互调用
http://www.mingw.org/wiki/msvc_and_mingw_dlls MinGW调用VC: The other way is to produce the .a files fo ...
- 【android学习4】Eclipse中Clean作用
今天修改Servlet中代码,重启服务端程序之后发现没有启作用,于是Clean了一把,果然生效. 查阅资料得知,Eclipse中是根据时间戳去编译代码,如果某个类对应的时间戳没有发生改变就不会重新编译 ...
- 获取设备唯一标识 uuid(采用第三方库SSKeychain)
SSKeyChain 下载链接: http://pan.baidu.com/s/1booV3VD 密码: ivdi /** * 获取设备唯一标识 uuid */ +(NSString*) uuid ...
- 使用Aspose.Cell控件实现多个Excel文件的合并
之前有写过多篇关于使用Apose.Cell控件制作自定义模板报表和通用的导出Excel表格数据的操作,对这个控件的功能还是比较满意,而且也比较便利.忽然有一天,一个朋友说:你已经有生成基于自定义模板报 ...