u245 機房病毒

2021-09-29 18:57:18 字數 1555 閱讀 5011

time limit: 1 second

memory limit: 128 mb

【問題描述】

我們機房中了病毒,因此幾乎什麼都無法正常進入。為了解決這個病毒,我們花了好幾天。終於在大家的共同努力下,病毒不再猖狂了。

我們的機房的所有計算機組成了一棵樹,這是由於病毒,計算機無法兩兩完全連通的結果。所以,每台計算機能夠直接連通的是

它的孩子計算機和父親計算機。話說某天晚上,我們發現病毒絕跡了,但是我們無法確認是否真的消滅乾淨了。因此我們需要派

一些同學犧牲上課時間看守住所有的電腦兩個小時,以確認沒有任何病毒痕跡才能放心。我們當然想少耽誤同學們的學習時間。

因此我們需要找出一種方案,使所需要的看守人員最少。直接連通的兩台計算機只需要乙個人即可看守住。

【輸入格式】

輸入檔案中資料表示一棵樹,描述如下:

第一行 n,表示樹中結點的數目。

從第二行開始,每行描述每個結點資訊,依次為:該結點標號i,k(後面有k條邊與結點i相連),接下來k個數,分別是每條邊的

另乙個結點標號r1,r2,…,rk。

對於乙個n(1 < n <= 1500)個結點的樹,結點標號在0到n-1之間,在輸入檔案中每條邊只出現一次。

【輸出格式】

輸出資料只有一行,表示至少需要耽誤多少學生的學習時間。

【資料規模】

對於 100% 的資料,保證n≤1500。

sample input1

4 0 1 1

1 2 2 3

2 0

3 0sample output1

1 【樣例說明】

將一名同學放在1號位置即可看守住所有的計算機。

【題解】

設f1[x]表示x這個節點要放人並且x與它的子樹都已經被控制了;

設f2[x]表示x這個節點不放人並且x與它的子樹都已經被控制了;

設f3[x]表示x這個節點沒有被控制,但是x的子樹都被控制了;

以上f都表示所需要的最小人數;

這題的根節點是確定的->1號節點;

【**】

#include 

#include

#include

const

int maxn = 1500 + 10;

using

namespace

std;

int n, f1[maxn] = , f2[maxn] = , f3[maxn] = ;

vector

a[maxn];

void tree_dp(int x, int fa)

if (!judge) //如果兒子全都選擇f2狀態則要加乙個最優的兒子節點監控它。

f2[x] += aa;

f1[x]++;//因為放了乙個節點所以遞增;

}int main()

}tree_dp(1, 0);

printf("%d\n", min(f1[1], f2[1]));//最後取根節點放或不放的最優值

return

0;

}

病毒茶几 U盤裡的惡魔 Autorun病毒

病毒茶几 u盤裡的惡魔 autorun病毒 simeon 聽見autorun病毒,你肯定不陌生了,它曾經幾次榮登病毒排行榜榜首,成為網際網路面臨重大威脅之一,眾多 杯具 是由它產生的,尤其是u盤上。我們常見到的是乙個autorun.inf和乙個exe檔案 見圖 這兩個檔案可是有歷史的啊。國內首例通過...

病毒茶几 U盤裡的惡魔 Autorun病毒

病毒茶几 u盤裡的惡魔 autorun病毒 simeon 聽見autorun病毒,你肯定不陌生了,它曾經幾次榮登病毒排行榜榜首,成為網際網路面臨重大威脅之一,眾多 杯具 是由它產生的,尤其是u盤上。我們常見到的是乙個autorun.inf和乙個exe檔案 見圖 這兩個檔案可是有歷史的啊。國內首例通過...

U盤病毒的清除

最近,身邊大部分人的機子都種了一種病毒 sal.xl e 會在磁碟右鍵選單中多出乙個auto選項 如圖 先不管這個病毒有什麼危害先,只要是病毒我們就要刪除 具體刪除辦法 1.alt shift del調出任務管理器,結束algssl.exe msfir80.exe msime80.exe這三個程序 ...