bzoj 1823: [JSOI2010]满汉全席【2-SAT+tarjan】
因为每种食材只有一份,所以两个评委的如果有要求同一种食材的两种做法就是不可行,用这个来建立2-SAT模型
然后跑tarjan判可行性即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=200005;
int T,n,m,h[N],cnt,dfn[N],low[N],tot,s[N],top,bl[N],col,rl[N],a[N],b[N];
bool v[N],fl;
struct qwe
{
int ne,to;
}e[N*10];
int read()
{
int r=0,f=0;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='m')
f=n;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r+f;
}
void add(int u,int v)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].to=v;
h[u]=cnt;
}
void tarjan(int u)
{
dfn[u]=low[u]=++tot;
v[s[++top]=u]=1;
for(int i=h[u];i;i=e[i].ne)
{
if(!dfn[e[i].to])
{
tarjan(e[i].to);
low[u]=min(low[u],low[e[i].to]);
}
else if(v[e[i].to])
low[u]=min(low[u],dfn[e[i].to]);
}
if(low[u]==dfn[u])
{
col++;
while(s[top]!=u)
{
bl[s[top]]=col;
v[s[top--]]=0;
}
bl[s[top]]=col;
v[s[top--]]=0;
}
}
int main()
{
T=read();
while(T--)
{
memset(h,0,sizeof(h));
memset(dfn,0,sizeof(dfn));
memset(v,0,sizeof(v));
cnt=0,tot=0,top=0,col=0,fl=1;
n=read(),m=read();
for(int i=1;i<=n;i++)
rl[i]=i,rl[i+n]=i;
for(int i=1;i<=m;i++)
a[i]=read(),b[i]=read();
for(int i=1;i<=m;i++)
for(int j=i+1;j<=m;j++)
{
if(rl[a[i]]==rl[a[j]]&&a[i]!=a[j])
add(i,j+m),add(j,i+m);
if(rl[b[i]]==rl[b[j]]&&b[i]!=b[j])
add(i+m,j),add(j+m,i);
if(rl[a[i]]==rl[b[j]]&&a[i]!=b[j])
add(i,j),add(j+m,i+m);
if(rl[b[i]]==rl[a[j]]&&b[i]!=a[j])
add(i+m,j+m),add(j,i);
}
for(int i=1;i<=m+m;i++)
if(!dfn[i])
tarjan(i);
for(int i=1;i<=m;i++)
if(bl[i]==bl[i+m])
{
fl=0;
break;
}
if(fl)
puts("GOOD");
else
puts("BAD");
}
return 0;
}
bzoj 1823: [JSOI2010]满汉全席【2-SAT+tarjan】的更多相关文章
- BZOJ 1823: [JSOI2010]满汉全席( 2-sat )
2-sat...假如一个评委喜好的2样中..其中一样没做, 那另一样就一定要做, 这样去建图..然后跑tarjan. 时间复杂度O((n+m)*K) ------------------------- ...
- bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat
noip之前学的内容了,看到题竟然忘了怎么建图了,复习一下. 2-sat 大概是对于每个元素,它有0和1两种选择,必须选一个但不能同时选.这之间又有一些二元关系,比如x&y=1等等... 先把 ...
- 【刷题】BZOJ 1823 [JSOI2010]满汉全席
Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而 ...
- bzoj 1823: [JSOI2010]满汉全席
#include<iostream> #include<cstdio> #include<cstring> using namespace std; ],next[ ...
- 【BZOJ】1823: [JSOI2010]满汉全席(2-sat)
题目 传送门:QWQ 分析 2-sat模板(然而辣鸡如我还是调了好久) 代码 //bzoj 1823 2-sat #include <bits/stdc++.h> using namesp ...
- 1823: [JSOI2010]满汉全席 2-sat
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1823 思路 建图,缩点tarjan 判断impossible 代码 #include < ...
- 洛谷P4171 [JSOI2010] 满汉全席 [2-SAT,Tarjan]
题目传送门 满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉 ...
- 2-set 1823: [JSOI2010]满汉全席
这个题告诉我变量循环使用,一定要赋好初值!!!!!! 一定要赋好初值!!!!!!一定要赋好初值!!!!!!一定要赋好初值!!!!!! #include<iostream>#include& ...
- 2-sat基础题 BZOJ 1823
http://www.lydsy.com/JudgeOnline/problem.php?id=1823 1823: [JSOI2010]满汉全席 Time Limit: 10 Sec Memory ...
随机推荐
- react 中的无状态函数式组件
无状态函数式组件,顾名思义,无状态,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑. 其实无状态函数式组件也是 ...
- Windows下也能够使用osw追朔系统历史性能
1.Windows系统历史性能分析困难背景 在Linux/Unix上.要追朔历史性能,一般採用部署nmon进行性能监控採集与存储的方式实现.可是却没有在Windows上的版本号. Windows系统假 ...
- 利用ms17_010漏洞实验
1.理论 在MSF里面msfconsole可以说是最流行的一个接口程序.但是msfconsole真的是一个强大的接口程序.Msfconsole提供了一个一体化的集中控制台.通过msfconsole,你 ...
- 微软开源 Try .NET - 创建交互式.NET文档
微软近日开源了一个新平台--Try .NET,该平台可以让开发者在线上编写并运行 .NET 代码.微软介绍,Try .NET 是一个可嵌入的代码运行器,不仅可以直接在线上对自己或者他人的代码进行编辑. ...
- GuozhongCrawler系列教程 (5) TransactionRequest具体解释
为了实现和维护并发抓取的属性信息提供线程安全的事务请求.TransactionRequest是一个抽象类自己不能设置Processor,却须要实现 TransactionCallBack接口.Tran ...
- eclipse 添加库
Window ->Preferences ->Java ->Build Path ->User Libraries New,起个名字,如myLibrary add jars,添 ...
- code[VS] 1297 硬币
题目描写叙述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,由于它受到很多因素的影响,包含制造工艺和流程上的.可是不论什么一种面值的硬币的重量总是处于某个特定范围之 ...
- Android Studio解决导入项目非常慢
Android Studio比Eclipse ADT有巨大的优势.Android Studio原生支持使用Gradle来构建项目,使用动态语言Groovy定义项目构建的过程,避免了build.xml文 ...
- 20170218-取值Domain
1.通过视图DD07V, 例子:取SD 凭证类别的DOMAIN(VBTYP)DATA: LT_DD07V TYPE TABLE OF DD07V.SELECT * INTO T_DD07V FROM ...
- Linux 内核源码中likely()和unlikely()【转】
本文转载自:http://blog.csdn.net/tigerjibo/article/details/8279183 ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们 ...