近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國大範圍流行,該國**決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播。經過 whowho(世界衛生組織)以及全球各國科研部門的努力,這種新興傳染病的傳播途徑和控制方法已經研究清楚,剩下的任務就是由你協助蓬萊國疾控中心制定乙個有效的控制辦法。
研究表明,這種傳染病的傳播具有兩種很特殊的性質;
第一是它的傳播途徑是樹型的,乙個人xx只可能被某個特定的人yy感染,只要yy不得病,或者是xyxy之間的傳播途徑被切斷,則xx就不會得病。
第二是,這種疾病的傳播有週期性,在乙個疾病傳播週期之內,傳染病將只會感染一代患者,而不會再傳播給下一代。
這些性質大大減輕了蓬萊國疾病防控的壓力,並且他們已經得到了國內部分易感人群的潛在傳播途徑圖(一棵樹)。但是,麻煩還沒有結束。由於蓬萊國疾控中心人手不夠,同時也缺乏強大的技術,以致他們在乙個疾病傳播週期內,只能設法切斷一條傳播途徑,而沒有被控制的傳播途徑就會引起更多的易感人群被感染(也就是與當前已經被感染的人有傳播途徑相連,且連線途徑沒有被切斷的人群)。當不可能有健康人被感染時,疾病就中止傳播。所以,蓬萊國疾控中心要制定出乙個切斷傳播途徑的順序,以使盡量少的人被感染。
你的程式要針對給定的樹,找出合適的切斷順序。
輸入格式:
輸入格式:
第一行是兩個整數n(1≤n≤300)n(1≤n≤300)和pp。
接下來pp行,每一行有22個整數ii和jj,表示節點ii和jj間有邊相連。(意即,第ii人和第jj人之間有傳播途徑相連)。其中節點11是已經被感染的患者。
輸出格式:
11行,總共被感染的人數。
輸入樣例#1: 複製
7 61 21 3
2 42 5
3 63 7
輸出樣例#1: 複製
3
//#include#define inf 0x3f3f3f3f
using
namespace
std;
vector
v[310],t[310
];
int level[310
]; int vis[310
];
intm,n,total,ans;
void create_tree(int node) ///
構建有向樹
}} void dfs(int le) //
一層一層地向下遞迴,初始level為1 }}
//到此位置total是沒有斷開情況下,所有的患病人數
if(child==0) ///
如果第le+1層沒有節點,遞迴結束條件之1
else
}total++; //
回溯,恢復到沒有切斷路的狀態,則被傳染的人增加1
for(int i = 1; i <= m; i++) //
到此,第le+1層都已經遞迴求過了。 }}
} int
main()
for(i = 1; i <= n; i++)
total = 1
; ans =inf;
create_tree(
1) ; //
構建有向樹
level[1]=1
; dfs(1);
printf(
"%d\n
",ans);
}return0;
}
P1041 傳染病控制
題目背景 近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國大範圍流行,該國 決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播。...
洛谷P1041 傳染病控制
近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國大範圍流行,該國 決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播。經過 wh...
P1041 傳染病控制(noip2003)(搜尋)
呃呃呃。真的是慘烈啊。今天的模擬賽是真的慘。本題,正解居然是搜尋!蒟蒻自己歪歪了乙個貌似是正解但是卻連一半都沒過的錯解。先解釋一下自己的dp思路把。f i u v 0 1 表示第i秒 等效於深度 uv之間的邊斷還是不斷。轉移有兩個 f dep u u v 1 size v 表示此邊斷,然後下面的點全...