题目

传送门:QWQ

分析

2-sat模板(然而辣鸡如我还是调了好久)

代码

//bzoj 1823 2-sat
#include <bits/stdc++.h>
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int get()
{
int x; char c=getchar();
while(c!='m'&&c!='h')c=getchar();
if(c=='m')x=read()*; else x=read()*-;
return x;
} struct Edge{
int from,to;
};
vector<int> G[];
int low[], dfn[], sccno[], dfs_clock, scc_num;
stack<int> s;
void insert(int u,int v){
G[u].push_back(v);
}
void tarjan(int u)
{
dfn[u]=low[u]=++dfs_clock; s.push(u);
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(!dfn[v]){
tarjan(v);
low[u]=min(low[u], low[v]);
}else if(!sccno[v]){
low[u]=min(low[u], dfn[v]);
}
}
if(low[u]==dfn[u]){
scc_num++;
for(;;){
int x=s.top(); s.pop();
sccno[x]=scc_num;
if(x==u) break;
}
}
} int main()
{
int n,m,T=read();
while(T--)
{
while(!s.empty()) s.pop();
n=read(); m=read();
int x,y,xp,yp;
for(int i=;i<m;i++)
{
x=get(); y=get();
if(x%==)xp=x--;
else xp=x++;
if(y%==)yp=y--;
else yp=y++;
insert(xp,y); insert(yp,x);
} memset(dfn,,sizeof(dfn)); memset(sccno,,sizeof(sccno));
dfs_clock=scc_num=;
for(int i=;i<=*n;i++)
if(!dfn[i]) tarjan(i); bool flag=;
for(int i=;i<=n;i++)
if(sccno[*i]==sccno[*i-]) flag=false;
if(flag) puts("GOOD");
else puts("BAD");
for(int i=;i<=*n;i++) G[i].clear();
}
return ;
}

【BZOJ】1823: [JSOI2010]满汉全席(2-sat)的更多相关文章

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

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

  2. bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat

    noip之前学的内容了,看到题竟然忘了怎么建图了,复习一下. 2-sat 大概是对于每个元素,它有0和1两种选择,必须选一个但不能同时选.这之间又有一些二元关系,比如x&y=1等等... 先把 ...

  3. 【刷题】BZOJ 1823 [JSOI2010]满汉全席

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

  4. bzoj 1823: [JSOI2010]满汉全席

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ],next[ ...

  5. bzoj 1823: [JSOI2010]满汉全席【2-SAT+tarjan】

    因为每种食材只有一份,所以两个评委的如果有要求同一种食材的两种做法就是不可行,用这个来建立2-SAT模型 然后跑tarjan判可行性即可 #include<iostream> #inclu ...

  6. 1823: [JSOI2010]满汉全席 2-sat

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1823 思路 建图,缩点tarjan 判断impossible 代码 #include < ...

  7. 2-set 1823: [JSOI2010]满汉全席

    这个题告诉我变量循环使用,一定要赋好初值!!!!!! 一定要赋好初值!!!!!!一定要赋好初值!!!!!!一定要赋好初值!!!!!! #include<iostream>#include& ...

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

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

  9. 2-sat基础题 BZOJ 1823

    http://www.lydsy.com/JudgeOnline/problem.php?id=1823 1823: [JSOI2010]满汉全席 Time Limit: 10 Sec  Memory ...

随机推荐

  1. 报错:java.lang.IllegalArgumentException: object is not an instance of declaring class

    反射的报错信息如下: java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.r ...

  2. 软件测试模型---V模型、W模型、H模型、X模型

    人活着一定要有目标,确定自己喜欢什么,再坚持做下去,那么他过得一定不会太差. 煽情的话,不多说,本文主要讲解:"软件测试模型-V模型.W模型.H模型.X模型". 1.V模型 V模型 ...

  3. Kafka 单节点单Kafka Broker集群

    下载与安装 从 http://www.apache.org/dist/kafka/ 下载最新版本的 kafka,这里使用的是 kafka_2.12-0.10.2.1.tgz $ tar zxvf ka ...

  4. 如何只更新datetime类型字段中的日期

    UPDATE  [dbo].[Order]       SET     CreateDate = STUFF(CONVERT(VARCHAR(50),CreateDate,126) ,1, 10, ' ...

  5. swift 函数参数——实参与形参

    实参 在传入函数之前已有明确定义. 具体定义为 func funcName( actualParameter: Type ) {} 形参 参数只在此函数内有效并可使用,函数外不需要有明确定义. 具体定 ...

  6. 拷贝ssh公钥到多台服务器上

    这篇文章几乎是对Push SSH public keys to multiple host的翻译,谢谢该作者. 使用SSH登陆.执行命令到远程机器需要输入密码,很多系统需要免输密码访问远程机器,比如h ...

  7. CSS 文本垂直居中对齐

    文本垂直居中对齐是一个很常见的问题,这里总结一下. 一.容器高度固定,单行文本垂直居中对齐 height:20px; line-height:20px; overflow:hidden; 二.容器高度 ...

  8. ssm异常;

    问题:Invalid bound statement (not found): com.itq.mapper.TbItemMapper.selectByExample 解决:修改pom.xml文件中添 ...

  9. Django中redis的使用方法(包括安装、配置、启动)

    一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2. ...

  10. apiman 安装&&使用

    安装测试基于docker 1. docker  image pull   docker pull apiman/on-wildfly1   2. 启动   docker run -d -p 8081: ...