【BZOJ】1823: [JSOI2010]满汉全席(2-sat)
题目
传送门: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)的更多相关文章
- 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+tarjan】
因为每种食材只有一份,所以两个评委的如果有要求同一种食材的两种做法就是不可行,用这个来建立2-SAT模型 然后跑tarjan判可行性即可 #include<iostream> #inclu ...
- 1823: [JSOI2010]满汉全席 2-sat
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1823 思路 建图,缩点tarjan 判断impossible 代码 #include < ...
- 2-set 1823: [JSOI2010]满汉全席
这个题告诉我变量循环使用,一定要赋好初值!!!!!! 一定要赋好初值!!!!!!一定要赋好初值!!!!!!一定要赋好初值!!!!!! #include<iostream>#include& ...
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
1823: [JSOI2010]满汉全席 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1246 Solved: 598[Submit][Status ...
- 2-sat基础题 BZOJ 1823
http://www.lydsy.com/JudgeOnline/problem.php?id=1823 1823: [JSOI2010]满汉全席 Time Limit: 10 Sec Memory ...
随机推荐
- .net 枚举(Enum)使用总结
在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等.如果把这些量说明为整型.字符型或其它类型显然是不妥当的.为此,C#提供了一种称为“ ...
- webpack 事件触发 按需加载
比较易懂, 方法简单 var util_sync = require('./util-sync.js') alert(util_sync.data) document.getElementById(& ...
- ubuntu16 tomcat7安装和编码修改
有直接通过命令安装的,但是我还是喜欢把文件下载下来,然后自己配置. 1,下载tomcat7二进制文件 https://tomcat.apache.org/download-70.cgi 2,解压tom ...
- 简单说说什么是Restful
在确定要把自己的服务创建成RESTFUL之前,要明白什么样的服务什么是RESTFUL service(https://en.wikipedia.org/wiki/Representational_st ...
- Iphone 消息通知(APNS)的3种方式 -- C# 和 nodejs
发送 APNS 使用 p12 文件(C#) public static bool PushWithP12(string apnToken, string message) { _log.DebugFo ...
- Jmter安装和配置
一.安装JDK 安装JDK 选择安装目录 安装过程中会出现两次安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文 ...
- Shell 批量搜索关键词并保存结果到文件中(数组、循环)
#!/bin/bash keywords=("不需要" "不用谢谢" "xxx" "xxx") for var in $ ...
- 数据链路层、ARP/RARP、ICMP、ping和traceroute
互联网基础: 数据链路层:RFC文档:894/1042/1340 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 ...
- BZOJ1026 SCOI2009 windy数 【数位DP】
BZOJ1026 SCOI2009 windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B ...
- 在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中
NuGet 提供了工具类型的包支持,生成一个基于 .NET Core 的 dll 或者基于 .NET Framework 的 exe 之后,你几乎可以对项目做任何事情.但是,默认情况下,NuGet 不 ...