Description

K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,最少可以分多少支队。

Input

第一行两个整数N,M。1<=N<=10000,1<=M<=1000000.表示有N个人,M对认识关系. 接下来M行每行输入一对朋友

Output

输出一个整数,最少可以分多少队

MCS算法(每次选一个与最多已标号点相邻的点进行标号,标号顺序的逆序即为完美消除序列)求弦图的完美消除序列,

并逆序贪心染色,每次染与相邻已染色结点不同的颜色中最小编号的颜色,染色所用颜色数即为答案

时间复杂度O(n+m)

  1. #include<cstdio>
  2. int n,m,a,b;
  3. int es[],ep=;
  4. int enx[];
  5. int ss[],ls[],rs[];
  6. int id[],f[],col[],cols[];
  7. int h[];
  8. int mx=,mxc=;
  9. inline void addedge(int a,int b){
  10. es[ep]=b;
  11. enx[ep]=enx[a];
  12. enx[a]=ep++;
  13. es[ep]=a;
  14. enx[ep]=enx[b];
  15. enx[b]=ep++;
  16. }
  17. inline void del(int w){
  18. w+=;
  19. rs[ls[w]]=rs[w];
  20. ls[rs[w]]=ls[w];
  21. }
  22. inline void add(int w,int x){
  23. w+=;
  24. rs[w]=rs[x];
  25. ls[w]=x;
  26. ls[rs[x]]=w;
  27. rs[x]=w;
  28. }
  29. inline int read(){
  30. int x=;
  31. char c=getchar();
  32. while(c>''||c<'')c=getchar();
  33. while(c>=''&&c<='')x=x*+c-'',c=getchar();
  34. return x;
  35. }
  36. int main(){
  37. n=read(),m=read();
  38. for(int i=;i<=n;i++)ls[i]=rs[i]=i;
  39. for(int i=;i<=n;i++)add(i,);
  40. for(int i=;i<=m;i++){
  41. a=read(),b=read();
  42. addedge(a,b);
  43. }
  44. for(int i=;i<=n;i++){
  45. while(rs[mx+]!=mx+)++mx;
  46. while(mx&&rs[mx]==mx)--mx;
  47. int c=rs[mx]-;
  48. f[id[c]=i]=c;
  49. del(c);
  50. int e=c;
  51. while(e=enx[e]){
  52. int u=es[e];
  53. ++h[u];
  54. if(!id[u])del(u),add(u,h[u]);
  55. }
  56. }
  57. for(int i=;i<=n;i++){
  58. int c=f[i];
  59. int e=c;
  60. while(e=enx[e])cols[col[es[e]]]=i;
  61. int cn=;
  62. while(cols[cn]==i)++cn;
  63. col[c]=cn;
  64. if(cn>mxc)mxc=cn;
  65. }
  66. printf("%d",mxc);
  67. return ;
  68. }

bzoj1006 神奇的国度的更多相关文章

  1. BZOJ1006 神奇的国度 【弦图染色——最大势算法MCS】

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 4146  Solved: 1916 [Submit][S ...

  2. BZOJ1006神奇的国度 弦圖染色 最大勢算法

    @[弦圖染色, 最大勢算法] Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA 相互认识,是简洁高效的.为了巩固三角 ...

  3. bzoj1006神奇的国度

    OrzCDQ您太强辣 #include<iostream> #include<cstdio> #include<cstdlib> #include<algor ...

  4. 【BZOJ1006】神奇的国度(弦图)

    [BZOJ1006]神奇的国度(弦图) 题面 BZOJ 题解 直接参考弦图的做法 #include<iostream> #include<cstdio> #include< ...

  5. bzoj1006 [HNOI2008]神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 2304  Solved: 1043 Description ...

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

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

  7. 【bzoj1006】[HNOI2008]神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3114  Solved: 1401[Submit][Sta ...

  8. BZOJ 1006 【HNOI2008】 神奇的国度

    题目链接:神奇的国度 一篇论文题--神奇的弦图,神奇的MCS-- 感觉我没有什么需要多说的,这里简单介绍一下MCS: 我们给每个点记录一个权值,从后往前依次确定完美消除序列中的点,每次选择权值最大的一 ...

  9. BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)

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

随机推荐

  1. 堆(Heap)和二叉堆(Binary heap)

    堆(Heap) The operations commonly performed with a heap are: create-heap: create an empty heap heapify ...

  2. 阅读《构建之法》第八、九、十章有感和Sprint总结

    1.阅读<构建之法>读后感 第八章:需求分析 需求分析,我觉得需求分析挺重要的,一个需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应 ...

  3. ZOJ 1007 Numerical Summation of a Series

    原题链接 题目大意:x的取值从0.000到2.000,输出每个x对应的y(x)的值 解法:参考了这篇日志http://www.cnblogs.com/godhand/archive/2010/04/2 ...

  4. JS控制文本框textarea输入字数限制

    <html> <head> <title>JS限制Textarea文本域字符个数</title> <meta http-equiv="C ...

  5. makefile--统一目标输出目录 (六)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 上一节我们把规则单独提取出来,方便了Makefile的维护,每个模块只需要给出关于自己的一些变量 ...

  6. 课堂所讲整理:包装&工具类

    package org.hanqi.array; import java.util.Random; public class BaoZhuang { public static void main(S ...

  7. 控制文本和外观------CSS Binding(CSS类名绑定)

    <style> .myColor{color:red;font-size:13px} .yourColor{color:green;font-size:34px}</style> ...

  8. Linux驱动设计—— 部分系统调用函数原型

    cdev结构体和它的初始化注册函数原型 struct cdev {   struct kobject kobj;          // 每个 cdev 都是一个 kobject   struct m ...

  9. SPI相位跟极性介绍

    [详解]SPI中的极性CPOL和相位CPHA是什么以及如何设置   2012-03-0214:34:10|  分类:单片机 |  标签: |字号大中小 订阅 版本:2011-08-15 作者:crif ...

  10. MFC中使用Duilib--2

    在上一篇文章"MFC中使用Duilib--1"中, 没有用到资源文件,即xml,本篇讲怎样加载文件. 1.  在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件, ...