BZOJ 1086: [SCOI2005]王室联邦( )
2016-01-12 20:01
330 查看
其实合法方案一定存在....(B <= N), 构造答案就可以了...然而我是看题解才会的.....
-----------------------------------------------------------------------
#include<cstdio>#include<cstring>#include<algorithm> using namespace std; const int maxn = 1009; int N, B, Id[maxn], V[maxn], n;int stk[maxn], Top; struct edge { int to; edge* next;} E[maxn << 1], *pt = E, *head[maxn]; inline void AddEdge(int u, int v) { pt->to = v; pt->next = head[u]; head[u] = pt++;} void Init() { scanf("%d%d", &N, &B); for(int i = 1; i < N; i++) { int u, v; scanf("%d%d", &u, &v); u--, v--; AddEdge(u, v); AddEdge(v, u); } Top = n = 0;} void DFS(int x, int fa = -1) { int t = Top; for(edge* e = head[x]; e; e = e->next) if(e->to != fa) { DFS(e->to, x); if(Top - t >= B) { V[++n] = x; for(; Top > t; Top--) Id[stk[Top]] = n; } } stk[++Top] = x;} int main() { Init(); DFS(0); for(; Top--; Id[stk[Top]] = n); printf("%d\n", n); for(int i = 0; i < N; i++) printf("%d ", Id[i]); puts(""); for(int i = 1; i <= n; i++) printf("%d ", ++V[i]); puts(""); return 0;}-----------------------------------------------------------------------
1086: [SCOI2005]王室联邦
Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 938 Solved: 539
[Submit][Status][Discuss]
Description
“余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理。他的国家有n个城市,编号为1..n。一些城市之间有道路相连,任意两个不同的城市之间有且仅有一条直接或间接的道路。为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个城市。每个省必须有一个省会,这个省会可以位于省内,也可以在该省外。但是该省的任意一个城市到达省会所经过的道路上的城市(除了最后一个城市,即该省省会)都必须属于该省。一个城市可以作为多个省的省会。聪明的你快帮帮这个国王吧!Input
第一行包含两个数N,B(1<=N<=1000, 1 <= B <= N)。接下来N-1行,每行描述一条边,包含两个数,即这条边连接的两个城市的编号。Output
如果无法满足国王的要求,输出0。否则输出数K,表示你给出的划分方案中省的个数,编号为1..K。第二行输出N个数,第I个数表示编号为I的城市属于的省的编号,第三行输出K个数,表示这K个省的省会的城市编号,如果有多种方案,你可以输出任意一种。Sample Input
8 21 2
2 3
1 8
8 7
8 6
4 6
6 5
Sample Output
32 1 1 3 3 3 3 2
2 1 8
HINT
Source
相关文章推荐
- 数据库性能优化
- jquery设置radio选中用法
- macJavascript调用动态链接库
- 在服务中注册广播接受者
- bzoj 1084;vijos 1191 [SCOI2005] 最大子矩阵
- HTMLParser 解析HTML
- 【谷歌浏览器】【谷歌地球】离线安装包的下载地址
- 《从零开始自学iOS》_03
- 【tyvj1208】最长不下降子序列2
- 汇智网node学习笔记
- 关于android的Notification的若干问题
- LeetCode 191 Number of 1 Bits(1 比特的数字们)
- 为什么要使用HibernateCallback
- 49. Group Anagrams
- rpm源
- Spring 学习笔记之整合Hibernate
- 机器视觉学习笔记(9)——一个双目测距的简单实例
- 使用SPRING+HIBERNATE 控制事务
- Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- hdoj 3832 Earth Hour 【最短路&&SPFA】