bzoj 1006: [HNOI2008]神奇的国度
这是个标准的弦图,但如果不知道弦图就惨了=_=
趁着这个机会了解了一下弦图,主要就是完美消除序列,求出了这个就可以根据序列进行贪心染色。
貌似这个序列很神,但是具体应用不了解……
这道题为什么可以这么做不理解……
我真是太弱了……
上代码:
#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]神奇的国度相关推荐
- 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)
诱导子图:子图中任意一条边的两个端点一定也都在这个子图中 最大团:团中任意两点之间一定都有边,而包含顶点最多的团就是最大团 最小团覆盖:用最少的团覆盖图中所有的点 最大独立集:独立集中任意两点之间一定 ...
- BZOJ 1006: [HNOI2008]神奇的国度( MCS )
弦图最小染色...先用MCS求出完美消除序列然后再暴力染色... ------------------------------------------------------------------- ...
- 1006: [HNOI2008]神奇的国度
图上的最小的染色方案: 学习了陈丹绮的论文: MCS算法 #include<cstdio> #define maxn 10005 #define maxm 2000005 using na ...
- 【BZOJ 1006】 [HNOI2008]神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 2000 Solved: 897 [ Submit] ...
- [HNOI2008]神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB [Submit][Status][Discuss] Description ...
- P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)
整理的算法模板合集: ACM模板 题目传送门 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国 ...
- BZOJ1006神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 2789 Solved: 1255 Description ...
- BZOJ 1005: [HNOI2008]明明的烦恼
BZOJ 1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线 ...
- BZOJ 1006 神奇的国度(弦图的染色数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...
最新文章
- 【Qt】ubuntu14.04+qt5.6+opencv2.4编程注意事项
- 树莓派udev不能自动挂载_直播课:教你用树莓派实现智能商店的自动结账
- spring--(14)利用注解建立bean与bean之间的关系
- linux命令lscpu
- 解决远程连接mysql错误1130
- 字符编码解码整合工具
- java ecc 加密_java-信息安全(十一)-非对称加密算法002-ECC,签名003-ECDSA签名
- 十大经典排序算法4(Python版本)
- python英语培训_学习Python语言一定要英语好嘛?
- RemObjects Elements 11.0
- SPSS-论文常用格式-三线表
- 快解析v6.5.3版本,添加端口映射教程
- python处理grd格式文件_Surfer的grd文件格式说明
- 思科模拟器交换机的几种配置模式
- Java 已知直角三角形周长,求整数边
- Bug管理工具的使用介绍(Bugger 2016)
- 【Cesium】加载互联网地图服务——高德地图
- 学校对计算机教师的检查要求,计算机学院2015-2016学年第二学期期中教学检查方案...
- 【微信授权登录】uniapp开发小程序,实现获取微信授权登录功能
- 运算符的优先级(从高到低)
热门文章
- win8网络受限官方解决办法
- 周鸿祎:不得不说的话
- C#中的DES加解密方法
- python复制文件的代码_python调用cmd复制文件代码分享
- 狂神css3笔记,【CSS】CSS3学习笔记(一)——选择器
- python文字处理dummy_python中multiprocessing、multiprocessing.dummy和threading用法笔记
- java字符串字典排序_java实现对map的字典序排序操作示例
- Java NIO网络编程之Selector
- Python机器学习:SVM008SVM思想解决回归问题
- pythonif有多个条件怎么办,Python if有多个条件怎么办