分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

BZOJ_1823_[JSOI2010]满汉全席_2-sat+tarjan

发布时间:2023-09-06 01:43责任编辑:林大明关键词:暂无标签

BZOJ_1823_[JSOI2010]满汉全席_2-sat

题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1823

分析:一道比较容易看出来的2-sat。

设满为1,汉为0;

题目要求两个至少满足一个。那么建图同奶牛议会http://www.cnblogs.com/suika/p/8457467.html。

之后求一遍强连通分量。

如果同一个点的true和false在一个强连通分量中就不可能满足。

代码:

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define N 250#define M 4500int head[N],to[M],nxt[M],cnt,n,m,ins[N];char s1[20],s2[20];int tot,dfn[N],low[N],st[N],top,bel[N],scc;inline void add(int u,int v){ ???to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;}void tarjan(int x){ ???dfn[x]=low[x]=++tot; ???st[top++]=x;ins[x]=1; ???for(int i=head[x];i;i=nxt[i]){ ???????if(!dfn[to[i]]){ ???????????tarjan(to[i]); ???????????low[x]=min(low[x],low[to[i]]); ???????}else if(ins[to[i]]){ ???????????low[x]=min(low[x],dfn[to[i]]); ???????} ???} ???if(low[x]==dfn[x]){ ???????int t=st[--top];ins[t]=0; ???????bel[t]=++scc; ???????while(t^x){ ???????????t=st[--top];ins[t]=0; ???????????bel[t]=scc; ???????} ???}}int main(){ ???int T; ???scanf("%d",&T); ???while(T--){ ???????memset(head,0,sizeof(head));cnt=0;tot=0;scc=0; ???????memset(dfn,0,sizeof(dfn)); ???????memset(low,0,sizeof(low)); ???????scanf("%d%d",&n,&m); ???????int x,y,tx,ty; ???????for(int i=1;i<=m;i++){ ???????????scanf("%s%s",s1,s2); ???????????if(s1[0]==‘m‘)tx=1;else tx=0; ???????????if(s2[0]==‘m‘)ty=1;else ty=0; ???????????sscanf(s1+1,"%d",&x); ???????????sscanf(s2+1,"%d",&y); ???????????add((1-tx)*n+x,ty*n+y); ???????????add((1-ty)*n+y,tx*n+x); ???????} ???????int flg=0; ???????for(int i=1;i<=n+n;i++)if(!dfn[i])tarjan(i); ???????for(int i=1;i<=n;i++){ ???????????if(bel[i]==bel[i+n]){ ???????????????flg=1;break; ???????????} ???????} ???????puts(flg?"BAD":"GOOD"); ???}}

BZOJ_1823_[JSOI2010]满汉全席_2-sat+tarjan

原文地址:https://www.cnblogs.com/suika/p/8457491.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved