博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2942 Knights of the Round Table
阅读量:4423 次
发布时间:2019-06-07

本文共 1573 字,大约阅读时间需要 5 分钟。

开始看错题了,“某些骑士无法出席所有会议”并不是无法出席某个会议,

我们尝试建图,按照题目给的条件,我们可以将相互仇恨的骑士之间建边。那么骑士可以坐在一起的条件就是他们之间没有边。所以我们建出这个图的补图会使解题更加方便。 然后我们可以发现一些显然的事情,比如度数<=1的点一定参加不了。一条链上的点也一定参加不了。 那么我们可以想到,能够参加会议的骑士一定在一个环里面。但在一个环里面的骑士并不一定可以参加会议。所以我们要做的就是思考如何对每一组双连通分量进行处理,其实很显然,只有处在一个奇圈内的骑士才可以参加。那么我们如何判断是否有奇圈存在呢? 给出两个定理: 1、如果一个双连通分量内的某些顶点在一个奇圈中(即双连通分量含有奇圈),那么这个双连通分量的其他顶点也在某个奇圈中 2、如果一个双连通分量含有奇圈,则他必定不是一个二分图。反过来也成立,这是一个充要条件。 证明好像挺简单的…… 所以,我们的任务就变成了求一个图是否为二分图。而求一个图是否为二分图的方法就是交叉染色法(说白了就是让每条边两端点颜色不同,随便dfs一下就好了)。

#include
#include
#include
#include
#define int long long#define MAXN 5010#define ma(x) memset(x,0,sizeof(x))using namespace std;struct edge{ int u,v,nxt; #define u(x) ed[x].u #define v(x) ed[x].v #define n(x) ed[x].nxt}ed[MAXN*100];int first[MAXN],num_e;#define f(x) first[x]bool map[1010][1010];int n,m;int dfn[MAXN],low[MAXN],num,root;int stack[MAXN],top,cnt;bool cut[MAXN];int c[MAXN];vector
dcc[MAXN];vector
inc[MAXN];void tarjan(int x){ dfn[x]=low[x]=++num; stack[++top]=x;int flag=0; if(x==root&&!f(x)){dcc[++cnt].push_back(x);return;} for(int i=f(x);i;i=n(i)) if(!dfn[v(i)]) { tarjan(v(i)),low[x]=min(low[x],low[v(i)]); if(low[v(i)]>=dfn[x]) { flag++;if(x!=root||flag>1)cut[x]=1; int z;++cnt; do{dcc[cnt].push_back(z=stack[top--]);}while(z!=v(i)); dcc[cnt].push_back(x); } } else low[x]=min(low[x],dfn[v(i)]);}bool pd(int x,int dc){ if(c[x]&&c[x]!=dc)return 0; if(c[x]==dc)return 1; for(int j=0;j

 

转载于:https://www.cnblogs.com/Al-Ca/p/11186746.html

你可能感兴趣的文章
Kibana登录认证设置
查看>>
volley 应用 GET POST请求 图片异步加载
查看>>
BZOJ-4325: NOIP2015 斗地主 (搜索神题)
查看>>
HDU-1222 Wolf and Rabbit (欧几里得定理)
查看>>
Camera Calibration 相机标定:原理简介(五)
查看>>
ClassCastException:ColorDrawable cannot be cast to RoundRectDrawableWithShadow
查看>>
ehcache实例
查看>>
Linux多线程与同步
查看>>
MS CRM 2011的自定义和开发(9)——编程模型介绍
查看>>
MySQL使用说明
查看>>
python 匿名函数
查看>>
Android Fragment 深度解析
查看>>
Codeforces Round #455 (Div. 2)E. Coprocessor[dfs]
查看>>
JavaScript - Iterable和遍历
查看>>
Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core
查看>>
疯狂ios讲义之使用CoreLocation定位(1)
查看>>
用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效
查看>>
微信小程序架构分析 (中)
查看>>
《虚拟化工程师》-真实环境-培训计划 v0.0.1( 赠送:第 01\02 章 (免费视频))...
查看>>
Exchange工具01—使用Exchange EDB Viewer查看EDB文件
查看>>