• bzoj 1006 弦图染色


    给定一个弦图,问最少染色数。

    对于弦图的一个完美消去序列,从后往前染色,每次染可以染的最小编号的颜色,由完美消去序列的定义,序列任一后缀的点的导出子图中,由该后缀第一个元素及其邻接点导出的子图一定是完全图,所以,序列中某一元素染的颜色编号是该完全图的大小。所以最小染色数小于等于最大团的点数,而显然前者又大于等于后者,故弦图的最小染色数等于最大团的大小。

     1 /**************************************************************
     2     Problem: 1006
     3     User: idy002
     4     Language: C++
     5     Result: Accepted
     6     Time:1672 ms
     7     Memory:11968 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <vector>
    12 #define maxn 10010
    13 using namespace std;
    14  
    15 int n, m;
    16 vector<int> g[maxn];
    17 bool done[maxn];
    18 int label[maxn], pos[maxn];
    19  
    20 int msc() {
    21     int rt = 0;
    22     for( int i=n; i>=1; i-- ) {
    23         int mu = 0;
    24         for( int u=1; u<=n; u++ ) {
    25             if( !done[u] ) {
    26                 if( !mu || label[u]>label[mu] )
    27                     mu = u;
    28             }
    29         }
    30         done[mu] = true;
    31         pos[mu] = i;
    32         int cnt = 0;
    33         for( int t=0; t<g[mu].size(); t++ ) {
    34             int v = g[mu][t];
    35             if( done[v] ) {
    36                 cnt++;
    37             } else {
    38                 label[v]++;
    39             }
    40         }
    41         rt = max( rt, cnt+1 );
    42     }
    43     return rt;
    44 }
    45 int main() {
    46     scanf( "%d%d", &n, &m );
    47     for( int i=1,u,v; i<=m; i++ ) {
    48         scanf( "%d%d", &u, &v );
    49         g[u].push_back(v);
    50         g[v].push_back(u);
    51     }
    52     printf( "%d
    ", msc() );
    53 }
    View Code
  • 相关阅读:
    减少.NET应用程序内存占用的一则实践
    ASP.NET中检测图片真实否防范病毒上传
    PHP、Python 相关正则函数实例
    利用脚本将java回归到面向函数式编程
    ASP.Net 实现伪静态方法及意义
    ExecuteNonQuery()方法
    在.net中使用split方法!
    str.split()如何用?谢谢
    输出货币型
    (DataRowView)e.Item.DataItem只有在ItemDataBound这个事件中起效
  • 原文地址:https://www.cnblogs.com/idy002/p/4295483.html
Copyright © 2020-2023  润新知