BZOJ 1006: [HNOI2008]神奇的国度 弦图的最小染色问题
来源:互联网 发布:淘宝天刀代购流程 编辑:程序博客网 时间:2024/06/05 09:33
弦图的最小染色问题: 先求出完美消除序列,然后从后往前贪心染色
1006: [HNOI2008]神奇的国度
Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2245 Solved: 1006
[Submit][Status][Discuss]
Description
K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,最少可以分多少支队。
Input
第一行两个整数N,M。1<=N<=10000,1<=M<=1000000.表示有N个人,M对认识关系. 接下来M行每行输入一对朋友
Output
输出一个整数,最少可以分多少队
Sample Input
4 5
1 2
1 4
2 4
2 3
3 4
1 2
1 4
2 4
2 3
3 4
Sample Output
3
HINT
一种方案(1,3)(2)(4)
Source
/* ***********************************************Author :CKbossCreated Time :2015年05月09日 星期六 11时18分58秒File Name :BZOJ1006.cpp************************************************ */#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <cmath>#include <cstdlib>#include <vector>#include <queue>#include <set>#include <map>using namespace std;const int maxn=11000;typedef pair<int,int> pII;int n,m;vector<int> G[maxn];int lab[maxn];int R[maxn];int seq[maxn];priority_queue<pII> q;void MCS(){memset(lab,0,sizeof(lab));memset(R,-1,sizeof(R));for(int i=1;i<=n;i++) q.push(make_pair(0,i));for(int i=n;i>=1;){pII u=q.top(); q.pop();int id=u.second;if(R[id]!=-1) continue;seq[i]=id; R[id]=i--;for(int j=0,sz=G[id].size();j<sz;j++){int v=G[id][j];if(R[v]!=-1) continue;lab[v]++;q.push(make_pair(lab[v],v));}}}void Color(int u){for(int i=0,sz=G[u].size();i<sz;i++){int v=G[u][i];if(lab[v]==-1) continue;R[lab[v]]=u;}for(int i=1;lab[u]==-1;i++){if(R[i]!=u) lab[u]=i;}}void solve(){MCS();memset(lab,-1,sizeof(lab));memset(R,-1,sizeof(R));for(int i=n;i>=1;i--) Color(seq[i]);int ans=0;for(int i=1;i<=n;i++) ans=max(ans,lab[i]);printf("%d\n",ans);}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout);scanf("%d%d",&n,&m);for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);G[u].push_back(v); G[v].push_back(u);}solve(); return 0;}
1 0
- BZOJ 1006([HNOI2008]神奇的国度-图的最小染色)
- BZOJ 1006: [HNOI2008]神奇的国度 弦图的最小染色问题
- 【弦图染色】【bzoj 1006】: [HNOI2008]神奇的国度
- BZOJ 1006 [HNOI2008]神奇的国度 弦图的最小染色
- BZOJ 1006 HNOI2008 神奇的国度 弦图最小染色 MCS算法
- bzoj 1006: [HNOI2008]神奇的国度 弦图最小染色 最大势算法
- [BZOJ1006][HNOI2008]神奇的国度(弦图最小染色)
- [弦图最小染色] BZOJ1006: [HNOI2008]神奇的国度
- BZOJ 1006-神奇的国度(弦图最小染色)
- [BZOJ 1006][HNOI2008]神奇的国度(弦图染色、最大势算法)
- [弦图 最小染色 完美消除序列 MCS算法] BZOJ 1006 [HNOI2008]神奇的国度
- [BZOJ1006][HNOI2008][弦图的最小点染色]神奇的国度
- BZOJ 1006: [HNOI2008]神奇的国度 &&弦图学习笔记
- bzoj1006: [HNOI2008]神奇的国度 弦图染色
- bzoj1006: [HNOI2008]神奇的国度 [弦图染色CMS算法]
- BZOJ 1006 神奇的国度 弦图最小染色 MCS算法
- 【最小染色】【HNOI 2008】【bzoj 1006】神奇的国度
- 【BZOJ 1006】 [HNOI2008]神奇的国度
- 机房收费系统重构(4)——.NET数据提供程序模型的四个核心元素
- 前端测试系列---header与footer元素
- linux学习笔记-makefile3
- 黑马程序员------------正则表达式
- linux平台学x86汇编(八):条件跳转
- BZOJ 1006: [HNOI2008]神奇的国度 弦图的最小染色问题
- cocos2dx的内存管理机制
- 吴超-----mapreduce的二次排序【在key排序的基础上,对value也进行排序】RawComparator
- Java对象克隆方法(浅克隆、深克隆)
- JavaScript-replace
- 黑马程序员-------JAVA基础--面向对象
- vagrant+VirtualBox配置linux环境
- C#中的各种泛型
- eclipse内容辅助显示超长无用信息(JavaElementLabels……)问题的解决方案