題目詳情
n個節點,m條邊的無向圖,每個節點乙個權值w。定義拆除乙個節點的代價為與其相鄰的節點的權值之和。拆除乙個節點後刪除所有與該節點相連的邊。求拆除所有節點需要花費的最少代價。輸入描述:輸入包含多組測試資料,每組測試資料第一行先輸入n,m(1 ≤ n ≤ 10000; 0 ≤ m ≤ 20000),第二行輸入n個整數wi(0 ≤ wi ≤ 105),接下來的m行,每行兩個整數u,v代表節點u與v相連(1 ≤ ui, vi ≤ n; ui ≠ vi).輸出描述:對於每組測試資料,輸出拆除所有節點需要花費的最少代價。
答題說明
樣例輸入:
4 310 20 30 40
1 41 2
2 3樣例輸出:
40note:
其中一種拆除策略是:
先拆除節點3,代價為20
再拆除節點2,代價為10
再拆除節點4,代價為10
最後拆除節點1,代價為0
所以總的代價=20+10+10+0=40
解題思路:看上去很複雜,實際上這道題的解法很簡單。因為所有點到最後都需要拆,則拆點的過程會涉及每一條邊。因此我們對每一條邊,取該邊的兩個頂點中權值較小的作為拆除該邊的代價,最終統計拆除所有邊所需要的最小代價和,即為所求解。
歡樂暑假線上程式設計比賽第一題 拆點遊戲
題目 n個節點,m條邊的無向圖,每個節點乙個權值w。定義拆除乙個節點的代價為與其相鄰的節點的權值之和。拆除乙個節點後刪除所有與該節點相連的邊。求拆除所有節點需要花費的最少代價。輸入描述 輸入包含多組測試資料,每組測試資料第一行先輸入n,m 1 n 10000 0 m 20000 第二行輸入n個整數w...
歡樂暑假線上程式設計比賽第三題 輪換數
題目詳情 把n各事物的集合劃分成k個非空子集的方式數,比如劃分2個非空子集,我們可以得到7種劃分方式 u u u u u u u.相信大家一看就知道這 個怎麼做吧,因為這就是著名的striling數.但是今天的問題卻是,計算n個元素安排城k個輪換 而不是子集 的 方式數.輪換是迴圈排列,也就是 a,...
歡樂暑假線上程式設計比賽第四題 分配糖果
在csdn上看到這麼個題目,與友友們一起分享下,如果有別的做法,也希望能拿出來交流交流。題目詳情 有n個小朋友站成一排 編號從0到n 1 每個小朋友有乙個rating值,存放在ratings陣列中。老師需要給他們分 配糖果,每個小朋友至少需要一顆糖果,對於任意相鄰的兩個小朋友i和i 1,rating...