这是个标准的弦图,但如果不知道弦图就惨了=_=

趁着这个机会了解了一下弦图,主要就是完美消除序列,求出了这个就可以根据序列进行贪心染色。

貌似这个序列很神,但是具体应用不了解……

这道题为什么可以这么做不理解……

我真是太弱了……

上代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <queue>
#define N 100100
#define M 2000100
using namespace std;
struct sss
{int num;int du;
};
int n, m;
int p[N] = {0}, next[M], v[M], bnum = 0;
int du[N] = {0}, vis[N] = {0}, qu[N];
priority_queue<sss> q;
int hcolor[N] = {0}, color[N] = {0}, colornum = 0, huse[N] = {0};bool operator < (sss x, sss y)
{return x.du < y.du;
}void addbian(int x, int y)
{bnum++; next[bnum] = p[x]; p[x] = bnum; v[bnum] = y;bnum++; next[bnum] = p[y]; p[y] = bnum; v[bnum] = x;
}void make_queue()
{for (int i = 1; i <= n; ++i){sss x; x.num = i; x.du = 0;q.push(x);}int dc = 0;while (dc < n){sss y = q.top(); q.pop();while (vis[y.num]){y = q.top();q.pop();}vis[y.num] = 1;qu[++dc] = y.num;int k = p[y.num]; sss ne;while (k){if (!vis[v[k]]){du[v[k]]++; ne.du = du[v[k]];ne.num = v[k]; q.push(ne);}k = next[k];}}
}void color_dian()
{for (int i = 1; i <= n; ++i){int x = qu[i];int k = p[x];int all = 0;while (k){if (color[v[k]] != 0) all = 1;huse[color[v[k]]] = x;k = next[k];}int pd = 0;for (int i = 1; i <= colornum; ++i)if (huse[i] != x){pd = 1;color[x] = i;break;}if (!pd) color[x] = ++colornum;}printf("%d\n", colornum);
}int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= m; ++i){int x, y; scanf("%d%d", &x, &y);addbian(x, y);}make_queue();color_dian();return 0;
}

转载于:https://www.cnblogs.com/handsomeJian/p/3967196.html

bzoj 1006: [HNOI2008]神奇的国度相关推荐

  1. 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)

    诱导子图:子图中任意一条边的两个端点一定也都在这个子图中 最大团:团中任意两点之间一定都有边,而包含顶点最多的团就是最大团 最小团覆盖:用最少的团覆盖图中所有的点 最大独立集:独立集中任意两点之间一定 ...

  2. BZOJ 1006: [HNOI2008]神奇的国度( MCS )

    弦图最小染色...先用MCS求出完美消除序列然后再暴力染色... ------------------------------------------------------------------- ...

  3. 1006: [HNOI2008]神奇的国度

    图上的最小的染色方案: 学习了陈丹绮的论文: MCS算法 #include<cstdio> #define maxn 10005 #define maxm 2000005 using na ...

  4. 【BZOJ 1006】 [HNOI2008]神奇的国度

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

  5. [HNOI2008]神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MB [Submit][Status][Discuss] Description ...

  6. P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)

    整理的算法模板合集: ACM模板 题目传送门 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国 ...

  7. BZOJ1006神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 2789 Solved: 1255 Description ...

  8. BZOJ 1005: [HNOI2008]明明的烦恼

    BZOJ 1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线 ...

  9. BZOJ 1006 神奇的国度(弦图的染色数)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...

最新文章

  1. 【Qt】ubuntu14.04+qt5.6+opencv2.4编程注意事项
  2. 树莓派udev不能自动挂载_直播课:教你用树莓派实现智能商店的自动结账
  3. spring--(14)利用注解建立bean与bean之间的关系
  4. linux命令lscpu
  5. 解决远程连接mysql错误1130
  6. 字符编码解码整合工具
  7. java ecc 加密_java-信息安全(十一)-非对称加密算法002-ECC,签名003-ECDSA签名
  8. 十大经典排序算法4(Python版本)
  9. python英语培训_学习Python语言一定要英语好嘛?
  10. RemObjects Elements 11.0
  11. SPSS-论文常用格式-三线表
  12. 快解析v6.5.3版本,添加端口映射教程
  13. python处理grd格式文件_Surfer的grd文件格式说明
  14. 思科模拟器交换机的几种配置模式
  15. Java 已知直角三角形周长,求整数边
  16. Bug管理工具的使用介绍(Bugger 2016)
  17. 【Cesium】加载互联网地图服务——高德地图
  18. 学校对计算机教师的检查要求,计算机学院2015-2016学年第二学期期中教学检查方案...
  19. 【微信授权登录】uniapp开发小程序,实现获取微信授权登录功能
  20. 运算符的优先级(从高到低)

热门文章

  1. win8网络受限官方解决办法
  2. 周鸿祎:不得不说的话
  3. C#中的DES加解密方法
  4. python复制文件的代码_python调用cmd复制文件代码分享
  5. 狂神css3笔记,【CSS】CSS3学习笔记(一)——选择器
  6. python文字处理dummy_python中multiprocessing、multiprocessing.dummy和threading用法笔记
  7. java字符串字典排序_java实现对map的字典序排序操作示例
  8. Java NIO网络编程之Selector
  9. Python机器学习:SVM008SVM思想解决回归问题
  10. pythonif有多个条件怎么办,Python if有多个条件怎么办