LUOGU P4171 [JSOI2010]满汉全席
解题思路
2-SAT 裸题。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int MAXN = 1005;
inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?-1:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
}
int n,m,T,head[MAXN],cnt,col_num,num;
int to[MAXN<<1],nxt[MAXN<<1],bl[MAXN];
int stk[MAXN],top,low[MAXN],dfn[MAXN];
bool vis[MAXN];
inline void add(int bg,int ed){
to[++cnt]=ed,nxt[cnt]=head[bg],head[bg]=cnt;
}
void tarjan(int x){
low[x]=dfn[x]=++num;vis[x]=1;stk[++top]=x;
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!dfn[u]) {
tarjan(u);
low[x]=min(low[x],low[u]);
}
else if(vis[u]) low[x]=min(low[x],dfn[u]);
}
if(low[x]==dfn[x]){
vis[x]=0;bl[x]=++col_num;
while(stk[top]!=x){
vis[stk[top]]=0;
bl[stk[top--]]=col_num;
}top--;
}
}
int main(){
T=rd();char c1[10],c2[10];
while(T--){
memset(head,0,sizeof(head));
memset(bl,0,sizeof(bl));
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(nxt,0,sizeof(nxt));
memset(to,0,sizeof(to));
top=num=col_num=cnt=0;
n=rd();m=rd();bool flag=false;
for(register int i=1;i<=m;i++){
scanf("%s%s",c1+1,c2+1);
int sx=0,sy=0,tx=0,ty=0,x=0,y=0,t1=2,t2=2;
if(c1[1]=='m') sx=1;if(c2[1]=='m') sy=1;
tx=sx^1,ty=sy^1;
while(isdigit(c1[t1])) x=(x<<1)+(x<<3)+c1[t1++]-'0';
while(isdigit(c2[t2])) y=(y<<1)+(y<<3)+c2[t2++]-'0';
// cout<<x<<" "<<y<<endl;
add(x<<1|tx,y<<1|sy);add(y<<1|ty,x<<1|sx);
}
for(register int i=2;i<=(n<<1|1);i++) if(!dfn[i]) tarjan(i);
for(register int i=1;i<=n;i++)
if(bl[i<<1]==bl[i<<1|1]) {
puts("BAD");flag=1;
break;
}
if(!flag) puts("GOOD");
}
return 0;
}
LUOGU P4171 [JSOI2010]满汉全席的更多相关文章
- Luogu P4171 [JSOI2010]满汉全席 2-sat
终于搞懂了\(2-sat\).实际上是个挺简单的东西,像网络流一样关键在于建模. 问题:\(n\)个数\(A\),可以选择\(0\)和\(1\),现在给你\(m\)组条件\(A\),\(B\),对每个 ...
- 洛谷 P4171 [JSOI2010]满汉全席 解题报告
P4171 [JSOI2010]满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高 ...
- 洛谷P4171 [JSOI2010] 满汉全席 [2-SAT,Tarjan]
题目传送门 满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉 ...
- P4171 [JSOI2010]满汉全席
简要的学了一下2-sat,然而不会输出方案. 就是个sb模板题啦 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define il ...
- [洛谷P4171][JSOI2010]满汉全席
题目大意:有$n$个点,每个点可以选或不选,有$m$组约束,形如$a,u,b,v$,表示$u=a,v=b$中至少要满足一个条件,问是否存在一组解,多组询问 题解:$2-SAT$,感觉是板子题呀,最后判 ...
- P4171 [JSOI2010]满汉全席(2-SAT)
传送门 2-SAT裸题 把每一道菜拆成两个点分别表示用汉式或满式 连边可以参考板子->这里 然后最尴尬的是我没发现$n<=100$然后化成整数的时候只考虑了$s[1]$结果炸掉了2333 ...
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
1823: [JSOI2010]满汉全席 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1246 Solved: 598[Submit][Status ...
- BZOJ 1823: [JSOI2010]满汉全席( 2-sat )
2-sat...假如一个评委喜好的2样中..其中一样没做, 那另一样就一定要做, 这样去建图..然后跑tarjan. 时间复杂度O((n+m)*K) ------------------------- ...
- BZOJ_1823_[JSOI2010]满汉全席_2-sat+tarjan
BZOJ_1823_[JSOI2010]满汉全席_2-sat 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1823 分析:一道比较容易看出来的 ...
随机推荐
- linux /bin/find 报错:paths must precede expression 及find应用
1.问题描述,运行下面的命令,清楚日志 [resin@xx ~]$ ssh xxx "/usr/bin/find /data/logs/`dirname st_qu/stdout.log` ...
- dataset datatable 转json
class ToJosn { #region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summar ...
- poj2407(欧拉函数模板)
sqrt(n)复杂度 欧拉函数模板 #include <iostream> #include <cstdio> #include <queue> #include ...
- [JZOJ5355] 【NOIP2017提高A组模拟9.9】保命
题目 描述 题目已经足够清晰了,所以不再赘述题目大意. 思考历程 一眼看下去,好像是一道大水题! 然而,再看几眼,感觉又不是一道水题! 然后想了半天,感觉它特别难转移! 最终打了一个暴力,然后发现样例 ...
- Element-ui之修改样式
修改样式的方法 官网上面介绍了几种方法: 当然还有其他的方法,比如: 直接在标签上面采用行内式: 在组件中的style里面添加样式: 引入.scss文件(注意:如果是公用样式最好在index.scss ...
- DuiLib学习笔记1.编译运行demo
c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...
- Docker系列(十四):Kubernetes API和源码分析
Kubernetes API入门 Ku8 eye开源项目
- @Restcontroller与@controller区别
@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1)如果只是使用@RestController注解Controller,则Control ...
- C++嵌套类(内部类与外部类)
在一个类中定义的类被称为嵌套类,定义嵌套类的类被称为外部类.; //不能访问 mytest::i = 10;//不能访问 } private: class mytest { int i; int j; ...
- 图解nginx配置文件nginx.conf
1. 一个server表示一个虚拟主机, 说白了就是网站, 一个nginx可以有多个server 2. listen网站监听的端口 3. server_name网站的域名 4. root是网站的相对目 ...