zoukankan      html  css  js  c++  java
  • [BZOJ1006]神奇的国度

    安利论文 《弦图与区间图》---cdq

    任意一个长度>3的环都有弦(即非连接相邻点的边),满足弦图的性质,对弦图进行最小染色

    然而并不能想得明白,维萨最小染色是从从后往前,最大独立集是从前往后...

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define maxn 10005
     4 #define maxm 1000005
     5 int cnt,v[maxm<<1],next[maxm<<1],first[maxn];
     6 int lab[maxn],vis[maxn],se[maxn],used[maxn],col[maxn];
     7 void add(int st,int end){
     8     v[++cnt]=end;
     9     next[cnt]=first[st];
    10     first[st]=cnt;
    11 }
    12 int main(){
    13     int n,m,a,b;
    14     scanf("%d%d",&n,&m);
    15     for(int i=1;i<=m;i++){
    16         scanf("%d%d",&a,&b);
    17         add(a,b),add(b,a);
    18     }
    19     for(int i=n;i;i--){
    20         int pos=0;
    21         for(int j=1;j<=n;j++)
    22             if(!vis[j]&&lab[j]>=lab[pos])pos=j;
    23         vis[pos]=1;
    24         se[i]=pos;
    25         for(int e=first[pos];e;e=next[e])
    26             lab[v[e]]++;
    27     }
    28     int ans=0;
    29     for(int i=n;i;i--){
    30         for(int e=first[se[i]];e;e=next[e])
    31             used[col[v[e]]]=se[i];
    32         int j=1;
    33         while(used[j]==se[i])j++;
    34         col[se[i]]=j;
    35         if(j>ans)ans=j;
    36     }
    37     printf("%d
    ",ans);
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    newman
    集合自动化
    56. Merge Intervals
    55. Jump Game
    48. Rotate Image
    34. Search for a Range
    33. Search in Rotated Sorted Array
    16. 3Sum Closest
    15. 3Sum
    11. Container With Most Water
  • 原文地址:https://www.cnblogs.com/Ngshily/p/5077951.html
Copyright © 2011-2022 走看看