傳染病控制(codevs 1091)

2022-05-14 07:30:11 字數 2155 閱讀 5082

題目描述 description

【問題背景】

近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國

大範圍流行,該國**決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完

全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,

蓬萊國的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播。經過 who(世界衛

生組織)以及全球各國科研部門的努力,這種新興傳染病的傳播途徑和控制方法已經研究

消楚,剩下的任務就是由你協助蓬萊國疾控中心制定乙個有效的控制辦法。

【問題描述】

研究表明,這種傳染病的傳播具有兩種很特殊的性質;

第一是它的傳播途徑是樹型的,乙個人x只可能被某個特定的人y感染,只要y不

得病,或者是xy之間的傳播途徑被切斷,則x就不會得病。

第二是,這種疾病的傳播有週期性,在乙個疾病傳播週期之內,傳染病將只會感染一

代患者,而不會再傳播給下一代。

這些性質大大減輕了蓬萊國疾病防控的壓力,並且他們已經得到了國內部分易感人群

的潛在傳播途徑圖(一棵樹)。但是,麻煩還沒有結束。由於蓬萊國疾控中心人手不夠,同

時也缺乏強大的技術,以致他們在乙個疾病傳播週期內,只能設法切斷一條傳播途徑,而

沒有被控制的傳播途徑就會引起更多的易感人群被感染(也就是與當前已經被感染的人有

傳播途徑相連,且連線途徑沒有被切斷的人群)。當不可能有健康人被感染時,疾病就中止

傳播。所以,蓬萊國疾控中心要制定出乙個切斷傳播途徑的順序,以使盡量少的人被感染。

你的程式要針對給定的樹,找出合適的切斷順序。

輸入描述 input description

輸入格式的第一行是兩個整數n(1≤n≤300)和p。接下來p行,每一行有兩個整數i

和j,表示節點i和j間有邊相連(意即,第i人和第j人之間有傳播途徑相連)。其中節點

1是已經被感染的患者。

輸出描述 output description

只有一行,輸出總共被感染的人數。

樣例輸入 sample input

7 61 2

1 32 4

2 53 6

3 7樣例輸出 sample output

資料範圍及提示 data size & hint

n<=300

/*

這個題耽誤了好長時間了,第一遍使用貪心寫的,意外的得了90分,然後就以為是不知哪個地方寫錯了,現在才知道,每次剪子樹節點最長的貪心方案是錯的,不過能的90分,這資料也是沒誰了。

正解就是裸的搜尋,沒加任何剪枝,雖然ac了,但跑得相當慢。

*/#include

#include

#define n 310

using

namespace

std;

int head[n],f[n],c[n][n],son[n][n],n,m,ans=n;

struct

node

;node e[n*2

];void add(int i,int x,int

y)void build(int x,int fa,intt)}

void dfs(int

t)

for(int i=1;i<=c[t][0];i++)

if(f[c[t][i]]==2

)

for(int j=1;j<=son[c[t][i]][0];j++)

f[son[c[t][i]][j]]=2

;

bool flag=false

;

for(int i=1;i<=c[t][0];i++)

if(!flag)dfs(t+1

);

for(int i=1;i<=c[t][0];i++)

if(f[c[t][i]]==2

)

for(int j=1;j<=son[c[t][i]][0];j++)

f[son[c[t][i]][j]]=0;}

intmain()

build(

1,-1,1);dfs(2

); printf("%d

",ans);

return0;

}

傳染病控制

參考部落格 本來有貪心的想法,但是好像不怎麼可以。貪心的想法可以很容易舉出反例 一棵子樹很大但是只有一根樹枝,那麼可以先切斷其他子樹的傳播,最後只需要一步就可以終止這棵子樹的傳播。由於題目裡n 300,估摸著暴力不會出事。否則wa 4 include include include define m...

P1041 傳染病控制

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

noip 2003 傳染病控制

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