洛谷P2279 HNOI2003 消防局的設立

2022-05-05 21:15:08 字數 855 閱讀 8058

題目鏈結

貪心:每次取出深度最大的節點,若沒有被覆蓋到,要想覆蓋它,

最優的做法顯然是將它的爺爺設為消防局

(因為該節點深度為最大,選兄弟、父親所覆蓋的節點,選了爺爺後都能夠覆蓋)

用優先佇列維護深度即可

#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某道題的簡化版....