[bzoj1006](HNOI2008)神奇的国度(弦图最小染色)【太难不会】

时间:2022-02-25 22:37:19

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

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

Sample Input

4 5
1 2
1 4
2 4
2 3
3 4

Sample Output

3

HINT

一种方案(1,3)(2)(4)

分析

我的能力也仅限于把问题转化为最小染色数= =然后我就不会做啦╮(╯▽╰)╭

其实这是个神奇的论文题……要用到弦图的单纯点和“完美消除序列”的概念,课件详见陈丹琦的冬令营2009讲稿《弦图与区间图》……

呃……我实在太弱,看了课件也是不知所云= =先留成坑吧……

[bzoj1006](HNOI2008)神奇的国度(弦图最小染色)【太难不会】[bzoj1006](HNOI2008)神奇的国度(弦图最小染色)【太难不会】
  #include <iostream>
 #include <cctype>
 #include <cstdio>
 #include <vector>
  inline           ;
          , c = getchar();
     x = c -       + c -       }
  ;
 vector< }, ans = , adjcnt[maxn] = {};
 inline           getd(N), getd(M);
              getd(a), getd(b);
         adj[a].push_back(b);
         adj[b].push_back(a);
     }
 }
 inline      , Max = ;
          lim = (].size();
     color[] = ;
     ;i < lim;++i)
         ][i]]) ++adjcnt[adj[][i]];
     ;i < N;++i){
         Max = ;
         ;j <= N;++j){
             ok_col[j] = ;
                      }
         lim = (         ;j < lim;++j)
             ok_col[color[adj[tmp][j]]] = ;
         ;j <= N;++j)          color[tmp] = j;
                  lim = (         ;j < lim;++j)
                  }
     printf( }
      init();
     work();
     ;
 }

MCS算法