cdqppt地址:https://wenku.baidu.com/view/a2bf4ad9ad51f01dc281f1df.html;

代码实现参考的http://blog.csdn.net/u014609452/article/details/51447533;

这个代码实现还是很妙的,为了快速找到label值最大的节点,新建虚拟节点n+1+i,连向所有label等于i的点;

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=,maxm=;
struct edg{
int to,nxt;
}e[maxm];
int f[maxn],best,n,m,last[maxn<<],t,vis[maxn],seq[maxn];
void add(int x,int y){++t;e[t].nxt=last[x];last[x]=t;e[t].to=y;}
void mcs(){
for(int i=;i<=n;++i)
add(n+,i);
for(int s=n;s;--s){
while(){
int v=;
for(int i=last[n++best];i&&!v;i=e[i].nxt){
if(!vis[e[i].to]){
v=e[i].to;
}
else
last[best+n+]=e[i].nxt;
}
if(v){
vis[v]=;seq[s]=v;
for(int i=last[v];i;i=e[i].nxt)
if(!vis[e[i].to]){
f[e[i].to]++;
add(f[e[i].to]+n+,e[i].to);
best=max(best,f[e[i].to]);
}
break;
}
else best--;
}
}
}
bool can[maxn][maxn];
int rk[maxn],x,y,cnt,tmp[maxn];
int main(){
cin>>n>>m;
for(int i=;i<=m;++i){
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
can[x][y]=can[y][x]=;
}
mcs();
for(int i=;i<=n;i++)rk[seq[i]]=i;
for(int i=n;i;i--){
int x=seq[i];cnt=;
for(int j=last[x];j;j=e[j].nxt){
if(rk[e[j].to]>rk[x])tmp[++cnt]=rk[e[j].to];
}
sort(tmp+,tmp+cnt+);
for(int i=;i<=cnt;++i){
if(!can[seq[tmp[]]][seq[tmp[i]]])
{puts("Imperfect\n");return ;}
}
}
printf("Perfect\n");
return ;
}

bzoj1242(弦图判定)的更多相关文章

  1. [bzoj1242] Zju1015 Fishing Net弦图判定

    弦图判定..MCS算法. 先选一个点,然后每次拿 相邻已选点最多 的未选点. 选完之后判断一下是否是完美消除序列. #include<cstdio> #include<iostrea ...

  2. bzoj 1242: Zju1015 Fishing Net 弦图判定

    1242: Zju1015 Fishing Net弦图判定 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 214  Solved: 81[Submit ...

  3. ZOJ 1015 Fishing Net(弦图判定)

    In a highly modernized fishing village, inhabitants there make a living on fishery. Their major tool ...

  4. ZOJ 1015 弦图判定

    一些定义: 弦图是一种特殊图:它的所有极小环都只有3个顶点. 单纯点:该顶点与其邻接点在原图中的导出子图是一个完全图. 图G的完美消去序列:一个顶点序列a1a2a3...an,使得对于每个元素ai,a ...

  5. bzoj 1242 弦图判定 MCS

    题目大意: 给定一张无向图,判断是不是弦图. 题解: 今天刚学了<弦图与区间图> 本来写了一个60行+的学习笔记 结果因为忘了保存重启电脑后被还原了... 那就算了吧. MCS最大势算法, ...

  6. 弦图的判定MCS算法(zoj1015)

    题意:裸的弦图的判定: 弦图定义:给出一个无向连通图,如果每个环中都存在至少一条弦(环中存在不相邻的两点直接相连)这样的图叫做弦图: 转载:http://blog.csdn.net/crux_d/ar ...

  7. ZOJ 1015 Fishing Net(判断弦图)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=15 题意:给定一个图.判断是不是弦图? 思路:(1)神马是弦图?对于一 ...

  8. BZOJ 1006 完美消除序列&最大势算法&弦图

    K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系 ...

  9. 【BZOJ1006】【HNOI2008】神奇的国度(弦图染色)

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1467  Solved: 603[Submit][Stat ...

随机推荐

  1. [z]libevent入门教程:Echo Server based on libevent 不指定

    [z]https://www.felix021.com/blog/read.php?2068 花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明, ...

  2. React-router4 第四篇 Custom Link 自定义链接

    直接贴代码 虽说我这么懒的人应该不会自定义标签,何必呢,,但是我还是看了官方的例子 直接抄过来, exact 属性:根据我的测试,这个属性应该和路由的精确匹配有关有关,当值为true时,路由是会精确匹 ...

  3. Linux netstat

    一.简介   二.语法   三.实例 1)查看TCP连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'

  4. iOS.Location-Based Service

    基于位置区域的服务 1. 背景 Ref[1] 在iOS设备锁屏的状态下,App的icon会出现在屏幕的左下角. iOS 8 Feature: Location-based Lockscreen App ...

  5. libjpeg安装和使用

    转自: http://blog.csdn.net/ice__snow/article/details/52563944 ,有几处做了一部分修改 一. 编译 下载地址 http://www.ijg.or ...

  6. 比较两个List列表,取得List中不同项返回

    /// <summary> /// 比对模型及属性数组 /// </summary> /// <typeparam name="TM">< ...

  7. 转~Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  8. http协议(四)http常用状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...

  9. Oracle VM VirtualBox如何设置网络地址转换NAT

    使用VirtualBox 安装好服务器后,需要设置网络,如果有IP, 则可以直接连接物理网络了, 如果没有,则可以直接使用NAT网络.设置方便快速. 先将虚拟机中的网络设置为自动获取,然后点击Virt ...

  10. 品味性能之道<十一>:JAVA中switch和if性能比较

    通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对 ...