NOIP2003 傳染病控制

2022-08-03 02:15:14 字數 805 閱讀 9411

純搜尋題

一開始思路比較混亂,但是仔細想想便能得出正解。

我們預處理出每一棵子樹的大小、每一層的兒子們,之後進行一次dfs,暴力列舉刪除每一棵子樹,同時更新答案,同時注意標記是否刪除。搜尋完成後回溯。最終就能得出答案。

1 #include 2

using

namespace

std;

3int

n,m,ans;

4int vis[310],size[310

];5 vector a[310

];6 vector t[310

];7 vector c[310

];8 queueint,int> >q;

9void

change() 22}

23}24int calc(int now,int

fa)

30return size[now]+=1;31

}32void tag(int now,int

val)

37void dfs(int s,int

sum) 47}

48}49int

main()

57change();

58 calc(1,0

);59 memset(vis,0,sizeof

(vis));

60 dfs(1,0

);61 printf("

%d\n

",n-ans);

62return0;

63 }

ac code

noip 2003 傳染病控制

問題背景 近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國大範圍流行,該國 決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國 的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播...

NOIP 2003傳染病控制

思路 1.dfs一遍,求出每個點的size,fa,deep 2.按照deep將每個點存入vector中 3.按照deep進行dffs求解答案 dffs時切斷某個點與fa的連線表示該點打上標記,表示不被感染,並減去該點size,每次進入下一層時,掃fa,如果fa被標記,則該點也被標記。最後dffs結束...

noip2003傳染病控制 2008 11 5

noip2003傳染病控制 2008.11.5 小結 1.這道題,我的方法普遍的要快很多,以空間換時間,我先把他們的關係用不同的陣列存起來,包括每個人的前面,每個人的後面,都存了下來,算是對資料的初始化吧。包括每個人在第幾層,然後一層一層的直接呼叫。好的資料結構真的很重要,載運算前,對資料的處理,真...