题目

传送门: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. 判断Integer值相等最好不用==最好使用equals

    Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;System.out.println(c == d);System.out.pr ...

  2. [Err] 1449 - The user specified as a definer ('student'@'%') does not exist

    1.错误描述 [SQL]use student; 受影响的行: 0 时间: 0.001s [SQL] call alter_student('t_student','MODIFY COLUMN `we ...

  3. nodejs——js 实现webSocket 兼容移动端

    nodejs——js 实现webSocket 兼容移动端 //服务器端 //npm install --save ws const express = require('express'); cons ...

  4. oracle管道函数的用法

    oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合,下面将介绍oracle管道函数的语法. 在普通的函数中,使用dbms_output输出的信息,需要在服务器执行完整个函数 ...

  5. 【示例代码】 Tuple<T> Func<T>

    using System; using System.Math; namespace PiWithMonteCarlo { /// <summary> /// Trivial, synch ...

  6. 安装伪分布式hbase 0.99.0

    查看是否启动成功,输入jps,看到有HMaster和HQuorumPeer,浏览器输入http://localhost:16030/master-status,能打开说明成功 hbase(main): ...

  7. IAuthenticationManager.SignOut 退不了

      AuthenticationManager.SignOut(); 这个退不了,然后就加上   AuthenticationManager.SignOut( DefaultAuthenticatio ...

  8. (转载)从MVC到前后端分离

    摘要:MVC模式早在上个世纪70年代就诞生了,直到今天它依然存在,可见生命力相当之强.MVC模式最早用于Smalltalk语言中,最后在其它许多开发语言中都得到了很好的应用,例如,Java中的Stru ...

  9. getServletContext()方法详解

    javax.servlet.ServletContext接口 一个servlet上下文是servlet引擎提供用来服务于Web应用的接口.Servlet上下文具有名字(它属于Web应用的名字)唯一映射 ...

  10. JavaScript 定时任务多事件冲突问题

    var iCount = setInterval(ChangeTime, 3500);//3.5秒请求一次函数 function ChangeTime() { $.ajax({ type: " ...