bzoj 1242 Zju1015 Fishing Net 弦图判定
1242: Zju1015 Fishing Net弦图判定
Time Limit: 10 Sec Memory Limit: 162 MB
[Submit][Status][Discuss]
Description
在一个高度信息化的渔村,鱼网的制作和修补都是由电脑完成。众所周知,鱼网是由网组成的(废话),网组成的东西叫网眼。如果网眼够小,就能捕到很多鱼;如果网眼太大,鱼就会全部漏走。每次捕鱼回来,鱼网都会烂得很厉害,小网眼会变成网眼,那鱼网就需要修补。他们希望有一个程序能够为他们判断鱼网是否需要修补。程序会把鱼网看作一个联通的图(不用进一步解释了吧)。他们的判断方法是:任何一个长度(组成其的边的数目)超过3的闭合的圈,都必须有一条交线将它分作两部分。(提示:递归下去,其实就是每个网眼都只能是三角形)如果合乎要求,程序就输出“Perfect",否则输出"Imperfect". 注:这里的交线是指一个联结一封闭圈的不同结点而捕属于该圈的一条边。
Input
数据以一行N M开始,表示鱼网有N个结点和M条边。(n<=0<=1000)以下M行是M条边的描述。每行两个整数A,B,表示结点A与结点B之间存在一条边。
Output
输出每个鱼网的测试结果,Perfect或Imperfect
Sample Input
1 2
2 3
3 4
4 1
Sample Output
#include<cstdio> #include<iostream> #define N 1101 using namespace std; bool con[N][N],vis[N]; int st[N],top; int rk[N],sa[N],d[N]; int n,m; int tot,front[N*2],to[N*N*4],nxt[N*N*4]; void read(int &x) {x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } } void add(int u,int v) {to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; } #define f(x) x+n+1 void mcs() {for(int i=1;i<=n;i++) add(f(0),i);int pos,mx=0;for(int i=n;i;--i){pos=0;for(int j=front[f(mx)] ; j && !pos ; j=nxt[j])if(!vis[to[j]]) {pos=to[j];vis[pos]=true;sa[i]=pos;}else front[f(mx)]=nxt[j];if(!pos) mx--,i++;else{for(int j=front[pos];j;j=nxt[j])if(!vis[to[j]]){d[to[j]]++;add(f(d[to[j]]),to[j]);mx=max(mx,d[to[j]]);}}} } int main() {read(n); read(m);int u,v;for(int i=1;i<=m;++i) {read(u); read(v);add(u,v);add(v,u);con[u][v]=con[v][u]=true;}mcs();for(int i=1;i<=n;++i) rk[sa[i]]=i;rk[0]=n+5;int now;for(int i=n;i;--i){now=sa[i];top=0;for(int j=front[now];j;j=nxt[j])if(rk[to[j]]>i) st[++top]=to[j];for(int j=2;j<=top;j++)if(!con[st[1]][st[j]]){puts("Imperfect");return 0;}}puts("Perfect"); }
转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7464539.html
bzoj 1242 Zju1015 Fishing Net 弦图判定相关推荐
- bzoj 1242: Zju1015 Fishing Net 弦图判定
1242: Zju1015 Fishing Net弦图判定 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 214 Solved: 81 [Subm ...
- bzoj1242: Zju1015 Fishing Net弦图判定
Description 在一个高度信息化的渔村,鱼网的制作和修补都是由电脑完成.众所周知,鱼网是由网组成的(废话),网组成的东西叫网眼.如果网眼够小,就能捕到很多鱼:如果网眼太大,鱼就会全部漏走.每次 ...
- ZOJ 1015 弦图判定
一些定义: 弦图是一种特殊图:它的所有极小环都只有3个顶点. 单纯点:该顶点与其邻接点在原图中的导出子图是一个完全图. 图G的完美消去序列:一个顶点序列a1a2a3...an,使得对于每个元素ai,a ...
- 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)
诱导子图:子图中任意一条边的两个端点一定也都在这个子图中 最大团:团中任意两点之间一定都有边,而包含顶点最多的团就是最大团 最小团覆盖:用最少的团覆盖图中所有的点 最大独立集:独立集中任意两点之间一定 ...
- BZOJ 1006 神奇的国度(弦图的染色数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...
- 图论 —— 弦图 —— LexBFS 算法
[概述] LexBFS 是字典序广度优先搜索(Lexicographic BFS),其常用于弦图的判定. 每次按从 n 到 1 的顺序依次给点编号,每个点维护一个 list,用于记录与其相邻的已标号点 ...
- 图论:关于弦图的几个图论结论
定义 弦:连接环中不相邻的两个点的边 一个图是弦图当图中任意长度大于3的环都至少有一个弦. α(G):\alpha(G):α(G):图GGG中最大独立集的大小,称为最大独立集数 κ(G):\kappa ...
- 概率图模型-可分解图-连接树算法-弦图-图论
概率图模型–精确推断算法的原理 本文主要内容 本文从可分解图出发,逐渐引入弦图,三角化图,然后揭示了为什么引入可分解图,因为可分解图是在连接树算法中最终得到的,还讲解了为什么要使用连接树算法,因为连接 ...
- 图论 —— 弦图 —— MCS 算法
[概述] MCS 算法是最大势算法(Maximum Cardinality Search),其常用于弦图的判定.求弦图的最大团.最小着色.最大独立集.最小团覆盖等. 一个无向图的弦图当且仅当其有一个完 ...
最新文章
- 华为鸿蒙新概念机,华为P50概念机确认,麒麟芯片+鸿蒙系统,这才是真旗舰!...
- jsp+ajax+servlet+sqlserver实现分页查询_SXT DAY063 分页
- c:数据结构-线性表
- SQL SERVER 2005 同步复制技术 发布与订阅功能使用说明
- java函数的参数传递
- 学html css之前,学习CSS前必知HTML基础
- hashmap value占用空间大小_如何获取 java hashmap占用存储空间空间大小
- 微信小程序头像上传以及剪切(使用插件image-cropper)
- sql cast 和convert用法详解
- c语言修仙亲吻片段,《C语言修仙》by一十四洲,摘抄
- 以Tethering.apk为例看APEX的搭建过程
- js继承java方法吗_你知道JavaScript的继承吗?
- Zynq-7000 - Which IBIS models should be used for Zynq-7000 devices?
- 【软考二】程序设计语言(做题)
- C++Primer PLus 第五版读书笔记
- 2021/12/14 nginx包下载安装步骤记录
- [bzoj3611][Heoi2014]大工程
- is not eligible for getting processed by all BeanPostProcessors
- [跟进]_淘宝推出搜索引擎
- 2022-2028全球预制镶板建筑行业调研及趋势分析报告