传送门

解题思路

2-SAT 裸题。

代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<cstdlib>
  6. #include<algorithm>
  7. using namespace std;
  8. const int MAXN = 1005;
  9. inline int rd(){
  10. int x=0,f=1;char ch=getchar();
  11. while(!isdigit(ch)) {f=ch=='-'?-1:1;ch=getchar();}
  12. while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
  13. return x*f;
  14. }
  15. int n,m,T,head[MAXN],cnt,col_num,num;
  16. int to[MAXN<<1],nxt[MAXN<<1],bl[MAXN];
  17. int stk[MAXN],top,low[MAXN],dfn[MAXN];
  18. bool vis[MAXN];
  19. inline void add(int bg,int ed){
  20. to[++cnt]=ed,nxt[cnt]=head[bg],head[bg]=cnt;
  21. }
  22. void tarjan(int x){
  23. low[x]=dfn[x]=++num;vis[x]=1;stk[++top]=x;
  24. for(register int i=head[x];i;i=nxt[i]){
  25. int u=to[i];
  26. if(!dfn[u]) {
  27. tarjan(u);
  28. low[x]=min(low[x],low[u]);
  29. }
  30. else if(vis[u]) low[x]=min(low[x],dfn[u]);
  31. }
  32. if(low[x]==dfn[x]){
  33. vis[x]=0;bl[x]=++col_num;
  34. while(stk[top]!=x){
  35. vis[stk[top]]=0;
  36. bl[stk[top--]]=col_num;
  37. }top--;
  38. }
  39. }
  40. int main(){
  41. T=rd();char c1[10],c2[10];
  42. while(T--){
  43. memset(head,0,sizeof(head));
  44. memset(bl,0,sizeof(bl));
  45. memset(dfn,0,sizeof(dfn));
  46. memset(low,0,sizeof(low));
  47. memset(nxt,0,sizeof(nxt));
  48. memset(to,0,sizeof(to));
  49. top=num=col_num=cnt=0;
  50. n=rd();m=rd();bool flag=false;
  51. for(register int i=1;i<=m;i++){
  52. scanf("%s%s",c1+1,c2+1);
  53. int sx=0,sy=0,tx=0,ty=0,x=0,y=0,t1=2,t2=2;
  54. if(c1[1]=='m') sx=1;if(c2[1]=='m') sy=1;
  55. tx=sx^1,ty=sy^1;
  56. while(isdigit(c1[t1])) x=(x<<1)+(x<<3)+c1[t1++]-'0';
  57. while(isdigit(c2[t2])) y=(y<<1)+(y<<3)+c2[t2++]-'0';
  58. // cout<<x<<" "<<y<<endl;
  59. add(x<<1|tx,y<<1|sy);add(y<<1|ty,x<<1|sx);
  60. }
  61. for(register int i=2;i<=(n<<1|1);i++) if(!dfn[i]) tarjan(i);
  62. for(register int i=1;i<=n;i++)
  63. if(bl[i<<1]==bl[i<<1|1]) {
  64. puts("BAD");flag=1;
  65. break;
  66. }
  67. if(!flag) puts("GOOD");
  68. }
  69. return 0;
  70. }

LUOGU P4171 [JSOI2010]满汉全席的更多相关文章

  1. Luogu P4171 [JSOI2010]满汉全席 2-sat

    终于搞懂了\(2-sat\).实际上是个挺简单的东西,像网络流一样关键在于建模. 问题:\(n\)个数\(A\),可以选择\(0\)和\(1\),现在给你\(m\)组条件\(A\),\(B\),对每个 ...

  2. 洛谷 P4171 [JSOI2010]满汉全席 解题报告

    P4171 [JSOI2010]满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高 ...

  3. 洛谷P4171 [JSOI2010] 满汉全席 [2-SAT,Tarjan]

    题目传送门 满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉 ...

  4. P4171 [JSOI2010]满汉全席

    简要的学了一下2-sat,然而不会输出方案. 就是个sb模板题啦 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define il ...

  5. [洛谷P4171][JSOI2010]满汉全席

    题目大意:有$n$个点,每个点可以选或不选,有$m$组约束,形如$a,u,b,v$,表示$u=a,v=b$中至少要满足一个条件,问是否存在一组解,多组询问 题解:$2-SAT$,感觉是板子题呀,最后判 ...

  6. P4171 [JSOI2010]满汉全席(2-SAT)

    传送门 2-SAT裸题 把每一道菜拆成两个点分别表示用汉式或满式 连边可以参考板子->这里 然后最尴尬的是我没发现$n<=100$然后化成整数的时候只考虑了$s[1]$结果炸掉了2333 ...

  7. bzoj1823 [JSOI2010]满汉全席(2-SAT)

    1823: [JSOI2010]满汉全席 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1246  Solved: 598[Submit][Status ...

  8. BZOJ 1823: [JSOI2010]满汉全席( 2-sat )

    2-sat...假如一个评委喜好的2样中..其中一样没做, 那另一样就一定要做, 这样去建图..然后跑tarjan. 时间复杂度O((n+m)*K) ------------------------- ...

  9. BZOJ_1823_[JSOI2010]满汉全席_2-sat+tarjan

    BZOJ_1823_[JSOI2010]满汉全席_2-sat 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1823 分析:一道比较容易看出来的 ...

随机推荐

  1. CDH断电后 hbase出现spilt块不完整问题

    从错误看起来是regionspilt时候断电了,导致hbase master启动不起来,因为是测试环境只能删除这些region了,掉一部分数据 删除hbase下spilt块,删除zK里面的habse ...

  2. swagger请求参数在header中添加token

    网友大部分说的是如下配置 参照配置然而没有作用 注掉改红框内的配置,在方法上加如下注释就可以用 @ApiImplicitParams({ @ApiImplicitParam(paramType = & ...

  3. Python全栈开发:web框架

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

  4. html--垂直居中

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数【转】

    Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数[转] 标签: javajvm监控工具性能优化 2015-04-07 16:47 1846人阅读 评论(0)  ...

  6. Python-函数基础(1)

    目录 函数定义 什么是函数? 定义函数三种形式 函数定义的特性 函数调用 函数返回值 return的特性: 函数的参数 有参函数 形参 位置形参 默认形参 实参 位置实参 关键字实参 可变长参数 形参 ...

  7. BZOJ 3245 最快路线

    和道路升级差不多,只是用的spfa; 十分有毒,在BZOJ上一直WA,对拍拍出来是一样的却告诉我不一样,然后发现自己把'\n'写成了‘\b’... #include<cstdio> #in ...

  8. Extjs4 似bug非bug的东西修改

    /** hzm modify * method: Ext.panel.Table.hasLockedColumns: function(columns) {} * function:支持extjs g ...

  9. Hie with the Pie (POJ 3311) 旅行商问题

    昨天想练习一下状态压缩,百度搜索看到有博客讨论POJ 3311,一看就是简单的旅行商问题,于是快速上手写了状态压缩,死活样例都没过... 画图模拟一遍原来多个城市可以重复走,然后就放弃思考了... 刚 ...

  10. RedHat服务器搭建Jenkins