【题目大意】

有n个材料,m个评委。每种材料可以被用来做满族菜或汉族菜,m个评委有两种可以让他满意的猜中。问是否可以满足所有评委要求?

【思路】

每天只能做三道题,我已经是一个废人了……(葛优躺.jpg)

裸2-SAT,先写了个两遍DFS的,速度略慢……24ms?

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=+;
vector<int> E[MAXN];
vector<int> rE[MAXN];
vector<int> vs;
int cmp[MAXN],vis[MAXN];
int cnt,n,m; void addedge(int u,int v)
{
E[u].push_back(v);
rE[v].push_back(u);
} void dfs(int u)
{
vis[u]=;
for (int i=;i<E[u].size();i++)
{
int v=E[u][i];
if (!vis[v]) dfs(v);
}
vs.push_back(u);
} void rdfs(int u,int t)
{
vis[u]=;
cmp[u]=t;
for (int i=;i<rE[u].size();i++)
{
int v=rE[u][i];
if (!vis[v]) rdfs(v,t);
}
} void init()
{
for (int i=;i<MAXN;i++) vector<int>().swap(E[i]);
for (int i=;i<MAXN;i++) vector<int>().swap(rE[i]);
scanf("%d%d",&n,&m);
for (int i=;i<m;i++)
{
char c1,c2;
int x,y,fx,fy;
getchar();
scanf("%c%d %c%d",&c1,&x,&c2,&y);
if (c1=='m') fx=x+n;else fx=x;
if (c2=='m') fy=y+n;else fy=y;
if (c1=='h') addedge(x+n,fy);else if (c1=='m') addedge(x,fy);
if (c2=='h') addedge(y+n,fx);else if (c1=='m') addedge(y,fx);
}
} void solve()
{
memset(vis,,sizeof(vis));
for (int i=;i<=n;i++) if (!vis[i]) dfs(i);
memset(vis,,sizeof(vis)),cnt=;
for (int i=vs.size()-;i>=;i--)
if (!vis[vs[i]]) rdfs(vs[i],++cnt);
} void get_ans()
{
for (int i=;i<=n;i++)
if (cmp[i]==cmp[i+n])
{
puts("BAD");
return;
}
puts("GOOD");
} int main()
{
int T;
scanf("%d",&T);
while (T--)
{
init();
solve();
get_ans();
}
return ;
}

【2-SAT(两次DFS版)】BZOJ1823-[JSOI2010]满汉全席的更多相关文章

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

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

  2. Bzoj1823 [JSOI2010]满汉全席

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1640  Solved: 798 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的 ...

  3. BZOJ1823 [JSOI2010]满汉全席 2-sat

    原文链接http://www.cnblogs.com/zhouzhendong/p/8125944.html 题目传送门 - BZOJ1823 题意概括 有n道菜,分别可以做成满式和汉式(每道菜只能做 ...

  4. [bzoj1823][JSOI2010]满汉全席——2-SAT

    题目大意 题目又丑又长我就不贴了,说一下大意,有n种菜,m个评委,每一个评委又有两种喜好,每种菜有满汉两种做法,只能选一种.判断是否存在一种方案使得所有评委至少喜欢一种菜品.输入包含多组数据. 题解 ...

  5. BZOJ1823 [JSOI2010]满汉全席 【2-sat】

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

  6. BZOJ1823[JSOI2010]满汉全席——2-SAT+tarjan缩点

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

  7. 【BZOJ1823】[JSOI2010]满汉全席(2-sat)

    [BZOJ1823][JSOI2010]满汉全席(2-sat) 题面 BZOJ 洛谷 题解 很明显的\(2-sat\)模板题,还不需要输出方案. 对于任意两组限制之间,检查有无同一种石材要用两种不同的 ...

  8. 【BZOJ1823】[JSOI2010]满汉全席 2-SAT

    [BZOJ1823][JSOI2010]满汉全席 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只 ...

  9. 拓扑排序详解(梅开二度之dfs版按字典序输出拓扑路径+dfs版输出全部拓扑路径

    什么是拓扑排序? 先穿袜子再穿鞋,先当孙子再当爷.这就是拓扑排序! 拓扑排序说白了其实不太算是一种排序算法,但又像是一种排序(我是不是说了个废话qwq) 他其实是一个有向无环图(DAG, Direct ...

随机推荐

  1. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D

    D. Little Artem and Dance time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  2. [hdu 3949]线性基+高斯消元

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 一开始给做出来的线性基wa了很久,最后加了一步高斯消元就过了. 之所以可以这样做,证明如下. 首 ...

  3. springboot中 后端跨域的实现配置

    在springboot的启动文件中,添加此内容,可以允许跨域

  4. javaScript中的this关键字解析

    this是JavaScript中的关键字之一,在编写程序的时候经常会用到,正确的理解和使用关键字this尤为重要.接下来,笔者就从作用域的角度粗谈下自己对this关键字的理解,希望能给到大家一些启示, ...

  5. java迭代map

    java迭代map: import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.ut ...

  6. 【BZOJ2738】矩阵乘法 [整体二分][树状数组]

    矩阵乘法 Time Limit: 20 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 给你一个N*N的矩阵,不用算矩阵乘 ...

  7. [bzoj3226][Sdoi2008]校门外的区间——线段树

    题目 略 题解 直接套黄学长模板. Orz 代码 #include <bits/stdc++.h> using namespace std; #define ll long long #d ...

  8. Python学习笔记 - day5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  9. swift网址

    http://www.cocoachina.com/industry/20140613/8818.html Swift -- 中文版两大官方文档汇总发布于:2014-06-13 15:34阅读数:22 ...

  10. For循环中不可以嵌套RDD操作

    今天犯了一个致命理解错误,Spark中的RDD Map操作只是一个计算式的传递,并不是Action,也就是在for循环中不会产生真正的计算. 因此,如果for循环中出现了RDD的Map类似操作,都会引 ...