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

这个题告诉我变量循环使用,一定要赋好初值!!!!!!

一定要赋好初值!!!!!!一定要赋好初值!!!!!!一定要赋好初值!!!!!!

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,n,m,head[205],next[2005],v[2005],cnt,dfn[205],cnt1,low[205];
int zhan[205],zhan1[205],top,shu[205],shu1;
int du()
{
int a1;
char ch;
ch=getchar();
for(;ch!=‘m‘&&ch!=‘h‘;ch=getchar());
scanf("%d",&a1);
if(ch==‘m‘)
return a1*2;
else
return a1*2-1;
}
void jia(int a1,int a2)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
v[cnt]=a2;
return;
}
void dfs(int a1)
{
cnt1++;
low[a1]=dfn[a1]=cnt1;
zhan[a1]=1;
top++;
zhan1[top]=a1;
for(int i=head[a1];i;i=next[i])
if(!dfn[v[i]])
{
dfs(v[i]);
low[a1]=min(low[a1],low[v[i]]);
}
else
if(zhan[v[i]])
low[a1]=min(low[a1],dfn[v[i]]);
if(low[a1]==dfn[a1])
{
shu1++;
for(int i=zhan1[top];i!=a1;top--,i=zhan1[top])
{
shu[i]=shu1;
zhan[i]=0;
}
top--;
shu[a1]=shu1;
zhan[a1]=0;
}
return;
}
int main()
{
scanf("%d",&t);
for(int i=0;i<t;i++)
{
memset(next,0,sizeof(next));
shu1=0;
top=0;
cnt=0;
cnt1=0;
scanf("%d %d",&n,&m);
for(int i=1;i<=2*n;i++)
head[i]=dfn[i]=0;
for(int j=0;j<m;j++)
{
int a1,a2,b1,b2;
a1=du();
b1=du();
if(a1%2==0)
a2=a1-1;
else
a2=a1+1;
if(b1%2==0)
b2=b1-1;
else
b2=b1+1;
jia(a2,b1);
jia(b2,a1);
}

for(int i=1;i<=2*n;i++)
if(dfn[i]==0)
dfs(i);
int kg=1;
for(int i=1;i<=n;i++)
if(shu[i*2]==shu[i*2-1])
{
kg=0;
printf("BAD\n");
break;
}
if(kg)
printf("GOOD\n");
}
return 0;
}

时间: 2024-10-19 19:59:48

2-set 1823: [JSOI2010]满汉全席的相关文章

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

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

[BZOJ 1823][JSOI2010]满汉全席(2-SAT)

Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家认证的满汉全席,也是中国厨师最大的荣誉之一. 世界满汉全席协会是由能够料理满汉全席的专家厨师们所组成,而他们之间还细分为许多不同等级的厨师.为了招收新进的厨师进入世界满汉全席协会,将于近日举办满汉全席大赛,协会派遣许多会员当作评审员,为的就是要在參赛的厨师之中,找到满汉料理界的明日

【BZOJ】1823: [JSOI2010]满汉全席(2-sat)

题目 传送门:QWQ 分析 2-sat模板(然而辣鸡如我还是调了好久) 代码 //bzoj 1823 2-sat #include <bits/stdc++.h> using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'

bzoj 1823: [JSOI2010]满汉全席

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int t,n,m,head[205],next[2005],v[2005],cnt,dfn[205],cnt1,low[205]; 6 int zhan[205],zhan1[205],top,shu[205],shu1; 7 int du() 8 { 9 int a1; 10 char ch; 11

bzoj1823 JSOI2010 满汉全席 2-SAT 经典建模

这个题其实我一开始看完没有想到2-SAT 而思路巧妙,编程复杂度低也是我选这个题的原因,在3h4t的赛制中非常适合(好像是病句..) 具体的来说就是,因为每种材料都有两个选择,那就是做成满式或者是汉式 那么我们可以考虑,在信息学奥赛中,只有两种选择的有哪些.. 看来只有二分图和2-SAT了? 然后我们注意到,每个选择是互相排斥的,那么这不正好符合2-SAT的性质么?--每个布尔变量只能是成立或者是不成立,这与满式汉式这好一样. 好那如果你已经想到2-SAT了以后这题基本就出来了 因为本题根本不用

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

[BZOJ1823][JSOI2010]满汉全席 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家认证的满汉全席,也是中国厨师最大的荣誉之一. 世界满汉全席协会是由能够料理满汉全席的专家厨师们所组成,而他们之间还细分为许多不同等级的厨师.为了招收新进的厨师进入世界满汉全席协会,将于近日举办满汉全席大赛,协会派遣许多会员当作评审员

Luogu P4171 [JSOI2010]满汉全席(2-SAT)

P4171 [JSOI2010]满汉全席 题意 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族料理方式,呈现在数量繁多的菜色之中.由于菜色众多而繁杂,只有极少数博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家认证的满汉全席,也是中国厨师最大的荣誉之一.世界满汉全席协会是由能料理满汉全席的专家厨师们所组成,而他们之间还细分为许多不同等级的厨师. 为了招收新进的厨师进入世界满汉全席协会,将于近日举办满汉全席大赛,协会派遣许多会员当作评审员,为的就是要在参赛的

【BZOJ1823】 [JSOI2010]满汉全席

Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家认证的满汉全席,也是中国厨师最大的荣誉之一. 世界满汉全席协会是由能够料理满汉全席的专家厨师们所组成,而他们之间还细分为许多不同等级的厨师.为了招收新进的厨师进入世界满汉全席协会,将于近日举办满汉全席大赛,协会派遣许多会员当作评审员,为的就是要在參赛的厨师之中,找到满汉料理界的明日

bzoj1823: [JSOI2010]满汉全席

2-SAT. 好像很复杂的样子所以还在慢慢摸索... 这道题只需要tarjan缩点就可以了,如果有一个材料的满式和汉式同时被选中,代表不可能实现. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 5000 + 10; int g[maxn],v[maxn],next[maxn],eid; int n,m,T; int dfn[maxn