純搜尋題
一開始思路比較混亂,但是仔細想想便能得出正解。
我們預處理出每一棵子樹的大小、每一層的兒子們,之後進行一次dfs,暴力列舉刪除每一棵子樹,同時更新答案,同時注意標記是否刪除。搜尋完成後回溯。最終就能得出答案。
1 #include 2ac codeusing
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 }
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.這道題,我的方法普遍的要快很多,以空間換時間,我先把他們的關係用不同的陣列存起來,包括每個人的前面,每個人的後面,都存了下來,算是對資料的初始化吧。包括每個人在第幾層,然後一層一層的直接呼叫。好的資料結構真的很重要,載運算前,對資料的處理,真...