题意:

Let's go home

Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1358 Accepted Submission(s): 522

Problem Description
小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。
—— 余光中

集训是辛苦的,道路是坎坷的,休息还是必须的。经过一段时间的训练,lcy决定让大家回家放松一下,但是训练还是得照常进行,lcy想出了如下回家规定,每一个队(三人一队)或者队长留下或者其余两名队员同时留下;每一对队员,如果队员A留下,则队员B必须回家休息下,或者B留下,A回家。由于今年集训队人数突破往年同期最高记录,管理难度相当大,lcy也不知道自己的决定是否可行,所以这个难题就交给你了,呵呵,好处嘛~,免费**漂流一日。

Input
第一行有两个整数,T和M,1<=T<=1000表示队伍数,1<=M<=5000表示对数。
接下来有T行,每行三个整数,表示一个队的队员编号,第一个队员就是该队队长。
然后有M行,每行两个整数,表示一对队员的编号。
每个队员只属于一个队。队员编号从0开始。
Output
可行输出yes,否则输出no,以EOF为结束。
Sample Input
1 2 0 1 2 0 1 1 22 4 0 1 2 3 4 5 0 3 0 4 1 3 1 4
Sample Output
yes no

思路:
      基础的2sat,不会的建议看根据对称性解析2sat的那个 ,把队长和两个队员看成基本的一对,然后再把排斥的那个看成排斥的一对,输入的时候记得吧两个队员hash成一个人就行了。


#include<stdio.h>
#include<string.h>
#include<stack>#define N_node 30000 + 100
#define N_edge 50000 + 100

using namespace std;typedef struct
{int to ,next;
}STAR;STAR E1[N_edge] ,E2[N_edge];
int list1[N_node] ,list2[N_node] ,tot;
int Belong[N_node] ,cnt;
int mark[N_node] ,id[N_node];
stack<int>st;void add(int a ,int b)
{E1[++tot].to = b;E1[tot].next = list1[a];list1[a] = tot;E2[tot].to = a;E2[tot].next = list2[b];list2[b] = tot;
}void DFS1(int s)
{mark[s] = 1;for(int k = list1[s] ;k ;k = E1[k].next){int xin = E1[k].to;if(!mark[xin]) DFS1(xin);}st.push(s);
}void DFS2(int s)
{mark[s] = 1;Belong[s] = cnt;for(int k = list2[s] ;k ;k = E2[k].next){int xin = E2[k].to;if(!mark[xin]) DFS2(xin);}
}int main ()
{int n ,m ,i ,a ,b ,c;while(~scanf("%d %d" ,&n ,&m)){for(i = 0 ;i < n ;i ++){scanf("%d %d %d" ,&a ,&b ,&c);id[a] = i * 2;id[b] = id[c] = i * 2 + 1;}memset(list1 ,0 ,sizeof(list1));memset(list2 ,0 ,sizeof(list2));tot = 1;for(i = 1 ;i <= m ;i ++){scanf("%d %d" ,&a ,&b);add(id[a] ,id[b]^1);add(id[b] ,id[a]^1);}memset(mark ,0 ,sizeof(mark));while(!st.empty())st.pop();for(i = 0 ;i < n * 2 ;i ++)if(!mark[i]) DFS1(i);memset(mark ,0 ,sizeof(mark));cnt = 0;while(!st.empty()){int xin = st.top();st.pop();if(mark[xin]) continue;++cnt;DFS2(xin);}int mk = 0;for(i = 0 ;i < n * 2 ;i += 2){if(Belong[i]  == Belong[i^1])mk = 1;}mk ? puts("no") : puts("yes");}return 0;
}

hdu1824 基础2sat相关推荐

  1. poj3683(2-SAT)

    题目大概意思为有一个神父,N场婚礼,给每场婚礼的开始时间 S ,结束时间 T ,和持续时间 D ,神父可以在开始 S 到 S + D 时,或者结束 T - D 到 T 时,两选一时间段在场,神父从不同 ...

  2. hdu1814 Peaceful Commission 2-SAT建图入门

    题面 The Public Peace Commission should be legislated in Parliament of The Democratic Republic of Byte ...

  3. hdu 3062 基础的2sat

    题意: Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU1824 2-sat

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

  5. hdu 1824 Let's go home(2-sat 基础题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1824 小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头.                       ...

  6. 图论 —— 2-SAT 问题

    [问题概述] 2-SAT问题是这样的:有n个布尔变量xi,另有m个需要满足的条件,每个条件的形式都是"xi为真/假或者xj为真/假" SAT 是适定性(Satisfiability ...

  7. hdu 1814 字典序最小的2sat(暴力深搜)

    题意:      题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路:      输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...

  8. hdu3715 二分+2sat+建图

    题意:       给你一个递归公式,每多一层就多一个限制,问你最多能递归多少层. 思路:      先分析每一层的限制 x[a[i]] + x[b[i]] != c[i],这里面x[] = 0,1, ...

  9. 基础省选+NOI 第9部分 网络流

    1.二分图匹配 算法竞赛入门经典训练指南+陈锋+ch5.5_二分图的匹配 算法竞赛入门经典训练指南+陈锋+ch5.5_二分图的匹配_哔哩哔哩_bilibili SWPU-ACM每周算法讲堂-匈牙利算法 ...

最新文章

  1. android-ndk-r15c libncurses.so.5
  2. 将要改变IT世界的的docker技术是什么?
  3. 前端请求后端数据的三种方式!
  4. jq苹果手机全屏下点击无效果_苹果系统自带外挂?无需越狱也可录制动作脚本...
  5. 如何Super Vectorizer从Mac 上的图像中删除多余的颜色区域?
  6. Python升级至2.7方法
  7. 需做勿畏拖 效能更轻松
  8. pycharm 右键无法显示unittest框架解决右键只有unittest 运行如何取消右键显示进行普通run...
  9. Python之random.seed()用法
  10. 腾讯围棋AI技术PhoenixGo正式开源
  11. html 打印 a4 像素,精确打印A4纸张排版HTML
  12. 智渔课堂官方免费教程二十六:Java基础教程之数组
  13. 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
  14. SDN开源框架:蝇量级选手Dragonflow究竟解决了什么问题
  15. Comparing JSON and XML? Stop it!
  16. Delphi10.4使用FireDAC数据访问组件开发数据库软件学习开发教程(1)
  17. 计算机应用基础文章 茶的功效,【课程改革论文】茶文化下的计算机应用基础教程课程改革(共5535字)...
  18. PYNQ系列学习(三)|pynq与zynq对比(二)
  19. 微信网站被误封,不知道为何被封,站长认证一直失败该如何解决?
  20. 概率图模型(6)马尔科夫随机场

热门文章

  1. IoT半导体购并案效果难现 服务器合作案后来居上
  2. mysql保留2位小数字段如何设置 浮点数
  3. 自动发布工具应该具备的11个标准特征
  4. 深入理解计算机系统-之-数值存储(六)--以不同的方式窥视内存
  5. 将一列数据转换成一个字段数据,逗号分隔
  6. poj 3006 java
  7. 第二步 (仅供参考) sencha touch + PhoneGap(cordova 2.9 及其以下版本) 使用 adt eclipse进行打包...
  8. C Primer+Plus(十一)
  9. 【转】电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解...
  10. 常用的Linux命令,日常收集记录