2-SAT,根据题意建好图,求一下强联通分量,判断一下就可以了

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std; const int maxn=; int T,M;
vector<int>G[maxn];
vector<int>FG[maxn]; int Belong[maxn],flag[maxn];
stack<int>S;
int Block; void init()
{
if(!S.empty()) S.pop();
for(int i=; i<maxn; i++) G[i].clear();
for(int i=; i<maxn; i++) FG[i].clear();
memset(Belong,,sizeof Belong);
memset(flag,,sizeof flag);
Block=;
} void dfs1(int now)
{
flag[now]=;
for(int i=; i<G[now].size(); i++)
if(!flag[G[now][i]])
dfs1(G[now][i]);
S.push(now);
} void dfs2(int now)
{
Belong[now]=Block;
for(int i=; i<FG[now].size(); i++)
if(!Belong[FG[now][i]])
dfs2(FG[now][i]);
} void Add(int x,int y)
{
G[x].push_back(y);
FG[y].push_back(x);
} int main()
{
while(~scanf("%d%d",&T,&M))
{
init();
for(int i=; i<T; i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
Add(*T+a,b);
Add(*T+a,c);
Add(*T+b,a);
Add(*T+c,a);
}
for(int i=; i<M; i++)
{
int a,b;
scanf("%d%d",&a,&b);
Add(a,*T+b);
Add(b,*T+a);
} for(int i=; i<*T; i++) if(!flag[i]) dfs1(i);
while(!S.empty())
{
int Top=S.top();
S.pop();
if(!Belong[Top])
{
Block++;
dfs2(Top);
}
}
int ans=;
for(int i=; i<*T; i++)
{
if(Belong[i]==Belong[*T+i])
{
ans=;
break;
}
}
if(ans==) printf("yes\n");
else printf("no\n");
}
return ;
}

HDU 1824 Let's go home的更多相关文章

  1. HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT

    一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...

  2. HDU 1824 Let's go home(2-SAT+Tarjan)

    Let's go home Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  3. hdu 1824

    也是一道2-sat的入门题: 不过题目描述的不清楚,看了别人的题解才知道题意: 和上面的那题差不多,一个模板: 代码: #include<cstdio> #include<stack ...

  4. 2-sat(tarjan算法)hdu(1824)

    hdu1824 Let's go home Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  5. hdu 1824 2-sat问题(判断)

    /* 题意:u,v,w队长,队员,队长留下两个队员可以回家,两个队员留下,队长回家 2-sat问题,把两个队员看成一个整体就变成一个简单2-sat问题了 */ #include<stdio.h& ...

  6. HDU 1824 Let&#39;s go home (2-SAT判定)

    Let's go home Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. 图论--2-SAT--HDOJ/HDU 1824 Let's go home

    Problem Description 小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头.                         -- 余光中 集训是辛苦的,道路是坎坷的,休息还是必须的. ...

  8. 【图论】2-sat总结

    2-sat总结 2-sat问题,一般表现的形式为.每一个点有两种方式a,b,要么选a,要么选b.而且点点之间有一些约束关系.比如:u和v至少一个选a.那么这就是一个表达式.把a当成真,b当成假,那就是 ...

  9. hdu 3062+1824(2-sat入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...

随机推荐

  1. word异常关闭,找到丢失的word

    Word模板路径位置 XP系统用户默认模板路径一般在 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templa ...

  2. php类于对象

    类与对象是面向对象程序设计的一个基本概念,类就是指某一类东西,而对象就是某一个类的具体实例 比如:黑帮是一个类,那陈浩南就是这个类的一个对象 再比如:人是一个类,那张三就是这个类的一个具体的对象 ph ...

  3. MFC下调试日志的打印

    最近项目出现点小Bug,需要调试跟踪代码,于是乎写了份打印日志的代码. CLogFile.h文件 #if !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8 ...

  4. split分割函数

    java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator,[limit]]) 参 ...

  5. OC-之AFNetworking

    AFNetworking介绍与用法: http://cocoadocs.org/docsets/AFNetworking/2.4.1/index.html

  6. WinDbg抓取程序报错dump文件的方法

    程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...

  7. java常量和变量的定义规则,变长参数的使用

    首先是定义的一般规则,类名首字母全部大写,常量全部大写用下划线分隔,变量用驼峰形式.注意使用long赋值用L时不能写小写的L要写大写的,不然会和数字“1”傻傻分不清. 下面是举例: public cl ...

  8. HDU4310:Hero

    Problem Description When playing DotA with god-like rivals and pig-like team members, you have to fa ...

  9. how to increase an regular array length in java?

    Arrays in Java are of fixed size that is specified when they are declared. To increase the size of t ...

  10. Github建站全攻略

    本系列为原创,发表在我的github主页,详细介绍了如何在github上建立个人网站,还包括域名绑定.评论功能.站内搜索等辅助功能的介绍,欢迎交流.   一步步在GitHub上创建博客主页(6) 本篇 ...