整理的算法模板合集: ACM模板


题目传送门

K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.
所谓N边关系,是指N个人 A1A2…An之间仅存在N对认识关系:(A1A2)(A2A3)…(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,最少可以分多少支队。

最多只有三角关系,很明显就是一个弦图(弦图就是任意大于三的环都至少有一个弦这样就不会构成四边、五边关系)将弦图分成多组的问题可以看做给弦图上的点染色且两个有直接边相连的点不能同色,这样就转化成了弦图的最小染色问题。直接跑优先队列优化的O(nlogn+m)O(nlogn+m)O(nlogn+m)的mcs算法即可。

int n,m,cnt=-1;
const int MAX=2000015;
int head[MAX];
bool vis[MAX],used[MAX];
int seq[MAX],label[MAX],color[MAX];
struct edge{int nxt;int to;
}e[MAX];
void add(int u,int v){e[++cnt].nxt=head[u];e[cnt].to=v;head[u]=cnt;
}
typedef pair<int,int>p;
priority_queue<p>q;
void mcs(){for(rg int i=1;i<=n;++i) q.push(p(0,i));for(rg int i=n;i>=1;--i){while(vis[q.top().second]) q.pop();int u=q.top().second;q.pop();seq[i]=u;vis[u]=1;for(rg int i=head[u];~i;i=e[i].nxt){if(!vis[e[i].to]) q.push(p(++label[e[i].to],e[i].to));}}
}
int solve(){int res=0;for(rg int i=n;i>=1;--i){memset(used,0,sizeof(used));for(rg int j=head[seq[i]];~j;j=e[j].nxt){used[color[e[j].to]]=1;}for(color[seq[i]]=1;used[color[seq[i]]];++color[seq[i]]);res=max(res,color[seq[i]]);}return res;
}
int main(){memset(head,-1,sizeof(head));n=read(),m=read();for(rg int i=1;i<=m;++i){int u=read(),v=read();add(u,v);add(v,u);}mcs();printf("%d\n",solve());return 0;
}

P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)相关推荐

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

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

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

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

  3. [HNOI2008]神奇的国度

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

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

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

  5. bzoj 1006: [HNOI2008]神奇的国度

    这是个标准的弦图,但如果不知道弦图就惨了=_= 趁着这个机会了解了一下弦图,主要就是完美消除序列,求出了这个就可以根据序列进行贪心染色. 貌似这个序列很神,但是具体应用不了解-- 这道题为什么可以这么 ...

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

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

  7. BZOJ1006神奇的国度

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

  8. [HNOI 2008] 神奇的国度 kingdom

    K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系 ...

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

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

最新文章

  1. JAVA不可变List的实现
  2. 实时监听 input输入框值的变化 并响应动作
  3. JavaScript变量和对象参数传值问题
  4. CodeForces - 628D Magic Numbers(数位dp)
  5. java ftp下载文件 慢_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
  6. 硬盘常规测试软件解析
  7. 0成本教你打造属于自己的字体库
  8. Nginx配置反向代理_飘云羽逸_新浪博客
  9. 基于 Layui form 组件的省市区级联的实现 - 组件化
  10. 外滩画报:揭秘全球电子垃圾坟墓
  11. 关于vray5.2怎么关闭日志窗口
  12. 【Linux后端开发必问】操作系统系列(Linux常用命令、文件权限修改、静态与动态库的制作)
  13. python 多因素方差分析_多因素方差分析估计平方和的三种方法
  14. 数据库新技术前沿总结
  15. 编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll”
  16. Headlike设计模式幕布笔记
  17. Python replace()方法
  18. 不是为了赢,只是不想输
  19. 尼古拉斯凯奇经典台词
  20. python列表中元素移动_python list中元素依次向前移动一位的方法

热门文章

  1. select * 和 select 所有字段的区别
  2. Mysql 查看连接数,状态 最大并发数 怎么设置才合理
  3. 菜鸟学Linux 第044篇笔记 算法和私有CA
  4. HTML 中有用的字符实体
  5. 一位39岁程序员的困惑:知道得越多编程越慢怎么办?
  6. java Windows7 下环境变量设置
  7. java泛型的几个例子
  8. vs 中大括号之间垂直虚线显示
  9. JS:1.2,控制语句(if,if else,for,switch,while,do while)
  10. 8086汇编语言命令速查与详解