bzoj1086专题

【SCOI2005】bzoj1086 王室联邦

从根开始dfs,用一个栈来维护目前还没有分配的点。对于当前处理的点,如果处理完一棵子树之后根的子树中剩下的节点达到 b b,就把这些点弹栈,这个根节点做省会。处理完子树之后把自己加入栈中。因为父亲节点一定比后继节点后入栈,而弹栈的时候会直接清空,也就是把所有后继节点都弹掉,所以不会出现断的情况。这样的话本来剩下的不到bb,从新子树中剩下的不到 b b,划分出来的省大小都不到2b2b。最后剩下的节点

[bzoj1086][dfs][栈]王室联邦

Description “余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理。他的国家有n个城市,编号为1..n。一些城市之间有道路相连,任意两个不同的城市之间有且仅有一条直接或间接的道路。为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个城市。每个省必须有一个省会,这个省会可以位于省内,也可以在该省外。但是