題目鏈結
貪心:每次取出深度最大的節點,若沒有被覆蓋到,要想覆蓋它,
最優的做法顯然是將它的爺爺設為消防局
(因為該節點深度為最大,選兄弟、父親所覆蓋的節點,選了爺爺後都能夠覆蓋)
用優先佇列維護深度即可
#include#include#include
#include
using
namespace
std;
#define inf 100000
#define n 1010
intn,head[n],num,ans,fa[n];
intok[n],deep[n],vis[n];
struct
cmp};
struct
node e[n
<<1
];priority_queue
< int, vector, cmp >q;
inline
intread()
returnx;}
inline
void add(int x,int
y)void dfs(int t,int
f)void dfs2(int t,int
dep)
}int
main()
dfs(
1,-1
);
for(int i=1;i<=n;i++) q.push(i);
intu,gf;
while(!q.empty())
printf(
"%d\n
",ans);
return0;
}
洛谷 P2279 HNOI2003 消防局的設立
題目描述 2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,...
洛谷 P2279 HNOI2003 消防局的設立
題目描述 2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,...
P2279 HNOI2003 消防局的設立
p2279 hnoi2003 消防局的設立 寫得不錯 寫得也可以 樹形動規的寫法,沒人指導,確實看不懂,無奈,找能看懂得來研究。此文做法,摘抄如下 乙個簡單的貪心,我們只要考慮2個消防局設立的距離為5時是最好的,因為利用最充分.就dfs一遍,再對根處理一下就可以了.這道題應該是sgu某道題的簡化版....