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. 关于document的节点;用Dom2创建节点;

    一.关于节点 1.节点树状图 document>documentElement>body>tagName 2.节点类型 元素节点(标签).文本节点(文本).属性节点(标签属性) 3. ...

  2. 使用GrabCut提取前景图像的示范代码

    #include<opencv2/opencv.hpp> bool selectObject = false; cv::Point origin; cv::Rect selection; ...

  3. PHP swoole process的使用

    引入背景:假如我们每天有10000个订单生成,需要同步到仓储系统中去,以前做法是开启一个crontab去跑这些任务,但是发现总有感觉同步效率低,间隔时间都是分钟级别的. 解决方案测试:我们将同步订单的 ...

  4. President's Office

    President of Berland has a very vast office-room, where, apart from him, work his subordinates. Each ...

  5. iOS.mach_absolute_time

    1. Technical Q&A QA1398 Mach Absolute Time Units https://developer.apple.com/library/mac/qa/qa13 ...

  6. python之初接触

    编程语言相关 1什么是编程语言 编程语言即语言,语言的本质就是沟通,因而编程语言与英语 .法语.日语等所有语言并无区别,只不过英语是人与人之间沟通的介质,而编程语言则是程序员与计算机沟通的介质. 程序 ...

  7. POJ3254或洛谷1879 Corn Fields

    一道状压\(DP\) POJ原题链接 洛谷原题链接 很显然的状压,\(1\)表示种植,\(0\)表示荒废. 将输入直接进行状压,而要满足分配的草场是适合种草的土地,即是分配时的状态中的\(1\),在输 ...

  8. 当前页面刷新和动态添加控件的jquery事件绑定on

    当前页面刷新(console): location.reload() 给动态添加的控件添加js事件(委托): <ul> <li>菜单一</li> <li> ...

  9. django模板语言和过滤

    一:模板组成 HTML代码 + 逻辑控制代码 逻辑代码组成格式: 使用大括号来引用变量, {{ var_name }} 二: Template和Context对象 //进入该的django的项目环境 ...

  10. java 内存, 类加载g

    1. java 内存区域 方法区 虚拟机栈 本地方法栈 堆 程序计数器 其中 :  方法区  和 堆 是所有线程共享的 , 其他是线程隔离的 1.  程序计数器 : 可以看做是当前线程所执行的字节码的 ...