弦图判定。。MCS算法。

  先选一个点,然后每次拿 相邻已选点最多 的未选点。

  选完之后判断一下是否是完美消除序列。

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=;
struct zs{int too,pre;}e[];int tot,last[maxn<<];
bool con[maxn][maxn],u[maxn];
int st[maxn],top,dl[maxn],tim[maxn],deg[maxn];
int i,j,k,n,m,now; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while(rx<''||rx>'')rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
inline void ins(int a,int b){e[++tot].too=b,e[tot].pre=last[a],last[a]=tot;}
#define f(x) x+n+1
inline void mcs(){
register int j;int i,mx=,pos;
for(i=;i<=n;i++)ins(f(),i);
for(i=n;i;i--){
pos=;
for(j=last[f(mx)];j&&!pos;j=e[j].pre)
if(!u[e[j].too])pos=e[j].too,u[pos]=,dl[i]=pos;
else last[f(mx)]=e[j].pre;
if(!pos)mx--,i++;else{
for(j=last[pos];j;j=e[j].pre)if(!u[e[j].too])
deg[e[j].too]++,ins(f(deg[e[j].too]),e[j].too),mx=max(mx,deg[e[j].too]);
}
}
}
bool cmp(int a,int b){return tim[a]<tim[b];}
int main(){
n=read(),m=read();register int j;
for(i=;i<=m;i++)j=read(),k=read(),ins(j,k),ins(k,j),con[j][k]=con[k][j]=;
for(i=;i<=n;i++)con[i][i]=;
mcs();
for(i=;i<=n;i++)tim[dl[i]]=i;tim[]=1e9;
for(i=n;i;i--){
now=dl[i],top=;
for(j=last[now];j;j=e[j].pre)if(tim[e[j].too]>i)
st[++top]=e[j].too;
if(top<)continue;int mn=;
for(j=;j<=top;j++)if(tim[st[j]]<tim[mn])mn=st[j];
for(j=;j<=top;j++)if(!con[st[]][st[j]]){
puts("Imperfect");return ;
}
}
puts("Perfect");
}

[bzoj1242] Zju1015 Fishing Net弦图判定的更多相关文章

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

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

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

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

  3. ZOJ 1015 弦图判定

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

  4. bzoj 1242 弦图判定 MCS

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

  5. bzoj1242(弦图判定)

    cdqppt地址:https://wenku.baidu.com/view/a2bf4ad9ad51f01dc281f1df.html: 代码实现参考的http://blog.csdn.net/u01 ...

  6. Zju1015 Fishing Net

    弦图判定 代码 #include<cstdio> #include<queue> #define mp make_pair #define fi first #define s ...

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

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

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

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

  9. ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net

    ●赘述题目 给出一张弦图,求其最小染色数. ●题解 网上的唯一“文献”:<弦图与区间图>(cdq),可以学习学习.(有的看不懂) 摘录几个解决改题所需的知识点: ●子图和诱导子图(一定要弄 ...

随机推荐

  1. Python3.5:装饰器的使用

    在Python里面函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数,简单来说函数也是变量也可以作文函数的参数 >>> def funA(): ... pr ...

  2. geoserver发布地图服务WMS

    wms服务发布: 1.打开geoserver管理首页(网址为http://localhost:8080/geoserver/web/),并使用安装时设置的帐户名和密码登录(这里是admin/geose ...

  3. SpringMVC处理multipart请求.

    一.简述 multipart格式的数据会将一个表单拆分为多个部分(part),每个部分对应一个输入域.在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是 ...

  4. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  5. PHP函数register_shutdown_function的使用

    函数简介当PHP程序执行完成后,自动执行register_shutdown_function函数,该函数需要一个参数,用来指定由谁处理这些后续的工作.其中,程序执行完成,分为以下几种情况:第一种:ph ...

  6. Integer和int

    例1: public static void main(String[] args){ Integer a = 128,b = 128; Integer c = 127,d = 127; System ...

  7. c3p0使用记录

    首先要导入c3p0包.c3p0下载解压后,lib目录下有三个包,使用mysql的话,只需要导入c3p0-0.9.5.2.jar,mchange-commons-java-0.2.11.jar. 要连接 ...

  8. LeetCode题目总结(一)

    我的代码在github上,https://github.com/WINTERFELLS/LeetCode-Answers 这里只提供个人的解题思路,不一定是最好的. Problems1-20 寻找两个 ...

  9. Head First设计模式之中介者模式

    一.定义 又称为调停者模式,定义一个中介对象来封装系列对象之间的交互.中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互. 二.结构 组成: ● 抽象中介者(M ...

  10. Swoole笔记(五)

    配置说明 $server->set(array( 'daemonize' => true, 'log_file' => '/www/log/swoole.log', 'reactor ...