hdu1824:http://acm.hdu.edu.cn/showproblem.php?pid=1824

题意:中文题。

题解:这一题建边要考虑两个限制条件,一个是队伍内部的,就是假如说 a,b,c,的话 a-->~b,b-->~a;a-->~c,c-->~a;同时b,c要留时候必须同时留下所以b-->c,c-->b;~b-->~c,~c-->~b;就是b留c需要留,c留b需要留,b不留c不要留,c不留留b不需要留,;;,然后是每一对的情况,直接建边就可以了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t,m,n;
const int N=;
const int M=;
const int INF=0xffffffff;
struct Edge{
int to,next;
} edge[M];
int cnt,u,v,dep,top,atype;
int dfn[N],low[N],vis[N],head[N],st[N],belong[N],in[N],out[N],sum[N];
//sum[i]记录第i个连通图的点的个数,in[i],out[i],表示缩点之后点的入度和初度。
void init(){
cnt=dep=top=atype=;
memset(head,-,sizeof(head));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vis,,sizeof(vis));
memset(belong,,sizeof(belong));
memset(in,,sizeof(in));
memset(out,,sizeof(out));
memset(sum,,sizeof(sum));
}
void addedge(int u,int v){
edge[cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt++;
} void Tarjan(int u){
dfn[u]=low[u]=++dep;
st[top++]=u;
vis[u]=;
for(int i=head[u]; i!=-; i=edge[i].next){
int v=edge[i].to;
if(!dfn[v]){
Tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(vis[v]){
low[u]=min(low[u],dfn[v]);
}
}
int j;
if(dfn[u]==low[u]){
atype++;
do{
j=st[--top];
belong[j]=atype;
sum[atype]++; //记录每个连通分量中点的个数
vis[j]=;
}
while(u!=j);
}
}
int fg[N],t1,t2,t3;
int main(){
while(~scanf("%d%d",&t,&m)){
int a,b,c;
int base=*t;
init();
for(int i=;i<t;i++){
scanf("%d%d%d",&a,&b,&c);
addedge(b,c);
addedge(c,b);
addedge(b+base,c+base);
addedge(c+base,b+base);
addedge(a+base,b);
addedge(a+base,c);
addedge(b+base,a);
addedge(c+base,a);
}
while(m--){
scanf("%d%d",&a,&b);
addedge(a,b+base);
addedge(b,a+base);
}
for(int i=; i<*t; i++)
if(!dfn[i])
Tarjan(i);
bool flag=false;
for(int i=;i<*t;i++){
if(belong[i]==belong[i+base]){
flag=true;
break;
}
}
if(!flag)printf("yes\n");
else
printf("no\n");
} }

随机推荐

  1. 基于HBase0.98.13搭建HBase HA分布式集群

    在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...

  2. JAVA格式化时间日期

    JAVA格式化时间日期 import java.util.Date; import java.text.DateFormat; /** * 格式化时间类 * DateFormat.FULL = 0 * ...

  3. Hibernate 配置派生属性

    在持久化类中,有些属性在表中没有对应的字段,可以在映射文件中设置派生属性. 比如在一个订单中有多个商品的价格,但没有计算总的价格,可以在持久化类中增添一个统计总价格的属性,在映射文件中配置一些信息. ...

  4. RedHat7搭建MongoDB

    yum安装MongoDB 添加MongoDB源# vi /etc/yum.repos.d/mongodb-org-3.0.repo [mongodb-org-3.0] name=MongoDB Rep ...

  5. 20、CSS

    CSS 层叠样式表(Cascading Style Sheets). 用于定义显示HTML样式. DIV和SPAN div是块级元素. span是行级元素. 将一些页面中的内容包裹起来统一设置样式. ...

  6. WisDom.Net 框架设计(七) 验证框架

    WisDom.Net-验证框架 1.分类 这里我们将数据验证分为以下几种 数据类型校验      主要用于确保数据类型输入的正确  比如年龄一项输入 A岁 ,显然不合法 域检查             ...

  7. (转)php连接mysql如何判断数据为空?

    <?php$result_a=mysql_query("select * from product_tag where product_id=$row[id]");$num ...

  8. C# DbHelperSQLP,操作不同的数据库帮助类 (转载)

    本类主要是用来访问不同数据库而编写的主要功能如下 .数据访问基础类(基于不同数据库),主要是用来访问不同数据库的. .得到最大值:是否存在:是否存在: . 执行SQL和Orace语句,返回影响的记录数 ...

  9. Object-C内存管理基础

    如果你通过手工alloc的方式分配内存实例化创建一个对象,之后你需要release这个对象,同理你也不能手工释放(release)一个能自动释放(autoreleased)的对象,因为这个样子会使你的 ...

  10. Laravel_1 安装

    1>http://www.golaravel.com/post/install-and-run-laravel-5-x-on-windows/ 2>http://www.golaravel ...