bzoj1086 SCOI2005 王室聯邦

2022-04-30 05:18:07 字數 749 閱讀 6586

題意:

sol  :這題水水啊,直接大力dfs就行了

首先當且僅當x對於以x為根的子樹,如果未分配的siz[x]>b,則單獨劃出乙個省

其他未被分配的點隨意就近分配就好了

#include#include

#include

#include

using

namespace

std;

const

int mx=1010

;int

n,k,top,ans,q[mx],cap[mx],belong[mx],siz[mx];

int tot,head[mx],nxt[2*mx],ver[2*mx];

inline

void add(int x,int

y)void dfs1(int x,int

fa)

else siz[x]+=siz[y];}}

siz[x]++;

}void dfs2(int x,int fa,int

tmp)

}void

output()

intmain()

for(int i=1,x,y;i)

dfs1(

1,0); if(!ans) cap[++ans]=1

; dfs2(

1,0,ans);

output();

return0;

}

bzoj1086 scoi2005 王室聯邦

題目鏈結 本來是來學樹上分塊的,沒想到正解是貪心 dfs。題意 求將樹分為幾個聯通塊,每個聯通塊大小大於b小於3b,是否可行。solution1 題都沒看就翻了題解。發現時貪心 dfs。一遍dfs即可。注意到以x為根節點時,其兒子s,則子樹s中與s相連的節點的連通塊,如果要構成乙個省,既可以s作為省...

bzoj1086 SCOI2005 王室聯邦

description 餘 人國的國王想重新編制他的國家。他想把他的國家劃分成若干個省,每個省都由他們王室聯邦的乙個成員來管理。他的國家有n個城市,編號為1.n。一些城市之間有道路相連,任意兩個不同的城市之間有且僅有一條直接或間接的道路。為了防止管理太過分散,每個省至少要有b個城市,為了能有效的管理...

BZOJ 1086 SCOI2005 王室聯邦

啊啊啊啊啊啊啊啊啊啊啊啊 又是一道赤果果的水水模板題 沒辦法啊我太弱了。好吧 這是一道樹分塊 原題戳對其實你們依然不用戳 餘 人國的國王想重新編制他的國家。他想把他的國家劃分成若干個省,每個省都由他們王室聯邦的乙個成 員來管理。他的國家有n個城市,編號為1.n。一些城市之間有道路相連,任意兩個不同的...