又是个2-sat的模板题;

反正评委的选择必须有一个是正确的,1错误,那么2就必须正确;

这就是一个2-sat问题。

直接上白书的模板啊,不过稍微要注意的一点是对于第一个点必须要选择,不然就违反了题意;

代码:

 #include<cstdio>
#define maxn 2005
#define maxm 4005
#include<vector>
#include<cstring>
using namespace std;
struct twosat
{
int n;
vector<int>g[maxn*];
bool mark[maxn*];
int s[maxn*],c; bool dfs(int x)
{
if(mark[x^])return ;
if(mark[x])return ;
mark[x]=;
s[c++]=x;
for(int i=; i<g[x].size(); i++)
if(!dfs(g[x][i]))return ;
return ;
}
void init(int n)
{
this->n=n;
for(int i=; i<*n; i++)g[i].clear();
memset(mark,,sizeof mark);
}
void add_clase(int x,int y)
{
g[x].push_back(y);
}
bool solve()
{
mark[]=,mark[]=;//强制让1选上去;
for(int i=; i<n*; i+=)
if(!mark[i]&&!mark[i+])
{
c=;
if(!dfs(i))
{
while(c>)mark[s[--c]]=;
if(!dfs(i+))return ;
}
}
return ;
}
} getans; int main()
{
int n,m,u,v;
while(scanf("%d%d",&n,&m)!=EOF)
{
getans.init(n);
for(int i=; i<m; i++)
{
scanf("%d%d",&u,&v);
if (u<) {u++;u=(-u)<<;}
else {u--;u=u<<|;}
if (v<) {v++;v=(-v)<<;}
else {v--;v=v<<|;}
getans.add_clase(u^,v);
getans.add_clase(v^,u);
}
if(getans.solve())puts("yes");
else puts("no");
}
return ;
}

NWERC 2012 Problem I Idol的更多相关文章

  1. NWERC 2012 Problem J Joint Venture

    刚刚开始想的是用二分的方法做,没想到这个题目这么水,直接暴力就行: 代码: #include<cstdio> #include<algorithm> #define maxn ...

  2. NWERC 2012 Problem A Admiral

    一个最小费用最大流的简单建模题: 比赛的时候和小珺合力想到了这个题目的模型: 方法:拆点+边的容量为1 这样就可以保证他们不会在点上和边上相遇了! 感谢刘汝佳大神的模板,让我这个网络流的小白A了这个题 ...

  3. NWERC 2012 Problem E Edge Case

    比赛的时候刷了一点小聪明,发现这个数列是卢卡斯数,一个递推关系像斐波拉契数列的数列: 我不知道怎么证明,如果哪天无意中会证了再加上: 这题唯一的难点就是大数运算: 直接用JAVA 代码: import ...

  4. Central Europe Regional Contest 2012 Problem I: The Dragon and the Knights

    一个简单的题: 感觉像计算几何,其实并用不到什么计算几何的知识: 方法: 首先对每条边判断一下,看他们能够把平面分成多少份: 然后用边来对点划分集合,首先初始化为一个集合: 最后如果点的集合等于平面的 ...

  5. Central Europe Regional Contest 2012 Problem c: Chemist’s vows

    字符串处理的题目: 学习了一下string类的一些用法: 这个代码花的时间很长,其实可以更加优化: 代码: #include<iostream> #include<string> ...

  6. Central Europe Regional Contest 2012 Problem J: Conservation

    题目不难,感觉像是一个拓扑排序,要用双端队列来维护: 要注意细节,不然WA到死  = =! #include<cstdio> #include<cstring> #includ ...

  7. Central Europe Regional Contest 2012 Problem H: Darts

    http://acm.hunnu.edu.cn/online/problem_pdf/CERC2012/H.pdf HUNNU11377 题意:飞镖环有十个环,没个环从外到里对应一个得分1~10,每个 ...

  8. 2012-2013 Northwestern European Regional Contest (NWERC 2012)

    B - Beer Pressure \(dp(t, p_1, p_2, p_3, p_4)\)表示总人数为\(t\),\(p_i\)对应酒吧投票人数的概率. 使用滚动数组优化掉一维空间. 总的时间复杂 ...

  9. HDU 2012 素数判定

    http://acm.hdu.edu.cn/showproblem.php?pid=2012 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括 ...

随机推荐

  1. hadoop错误Cannot load libsnappy.so.1 (libsnappy.so.1 cannot open shared object file No such file or directory)!

    报如下错误 解决方法: 1.下载libsnappy.so.1(https://yunpan.cn/cSHRHTBJGVVX6  访问密码 c992) 2.上传到linux系统 3.安装 4.安装完成后 ...

  2. request对象

    Servlet三大域对象的应用 request.session.application(ServletContext) 请求转发器: public void doGet(HttpServletRequ ...

  3. Hadoop书籍汇总

    <Hadoop实战>陆嘉恒 <Hadoop - The Definitive Guide>Tom White,中文版<Hadoop权威指南> <Hadoop技 ...

  4. 二分图的判定hihocoder1121 and hdu3478

    这两个题目都是二分图的判定,用dfs染色比较容易写. 算法流程: 选取一个没有染色的点,然后将这个点染色,那么跟他相连的所有点一定是不同颜色的,所以,如果存在已经染过颜色的,如果和这个颜色相同的话,就 ...

  5. jquery.validate中使用remote,remote相同值不校验问题解决

    jquery.validate中使用remote, remote相同值不校验问题解决 >>>>>>>>>>>>>>& ...

  6. HIdernate入门

    简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...

  7. C#图片处理高级应用(裁剪,缩放,清晰度,水印)

    转自:http://wu-jian.cnblogs.com/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下, ...

  8. WisDom.Net 框架设计(六) license

    WisDom.Net-license 1.为啥要用license    license (许可证) 顾名思义就是说我的软件只能给在指定的机器上使用.毕竟很多项目都不是免费的,(说句题外话,其实我用的也 ...

  9. SqlSugar-事务操作

    一.事务操作实例 特别说明: 1.特别说明:在事务中,默认情况下是使用锁的,也就是说在当前事务没有结束前,其他的任何查询都需要等待 2.ReadCommitted:在正在读取数据时保持共享锁,以避免脏 ...

  10. iOS开源项目集合一

    http://www.th7.cn/Program/IOS/201308/146283.shtml