【題目描述】
joe覺得雲朵很美,決定去山上的商店買一些雲朵。商店裡有n朵雲,雲朵被編號為1,2,……,n,並且每朵雲都有乙個價值。但是商店老闆跟他說,一些雲朵要搭配來買才好,所以買一朵雲則與這朵雲有搭配的雲都要買。
但是joe的錢有限,所以他希望買的價值越多越好。
【輸入】
第1行n,m,w,表示n朵雲,m個搭配,joe有w的錢。
第2~n+1行,每行ci,di表示i朵雲的價錢和價值。
第n+2~n+1+m行,每行ui,vi,表示買ui就必須買vi,同理,如果買vi就必須買ui。
【輸出】
一行,表示可以獲得的最大價值。
【輸入樣例】
5 3 10
3 10
3 10
3 10
5 100
10 1
1 33 2
4 2【輸出樣例】
1【提示】
【資料範圍】
30%的資料保證:n≤100
50%的資料保證:n≤1,000;m≤100;w≤1,000
100%的資料保證:n≤10,000;0≤m≤5000;w≤10,000
【**】
#include
#include
#include
#include
#include
const
int maxn =
1e4+5;
using
namespace std;
int p[maxn]
,price[maxn]
,value[maxn]
,dp[maxn]
;int
findf
(int k)
void
union
(int a,
int b)
}int
main()
while
(m--
)for
(int i=
1;i<=n;i++)}
} cout
}
T1387 搭配購買 buy
joe覺得雲朵很美,決定去山上的商店買一些雲朵。商店裡有n朵雲,雲朵被編號為1,2,n,並且每朵雲都有乙個價值。但是商店老闆跟他說,一些雲朵要搭配來買才好,所以買一朵雲則與這朵雲有搭配的雲都要買。但是joe的錢有限,所以他希望買的價值越多越好。第1行n,m,w,表示n朵雲,m個搭配,joe有w的錢。...
SSL ZYC 2347 搭配購買
題目大意 現在有n件商品,其中m組買了乙個就必須買另外乙個。求k元錢的最大價值。思路 如果沒有第二句話就是乙個普通的01揹包。既然這樣,那這道題是否可以轉換為01揹包呢?答案很明顯是可以的。可以利用並查集,將這m組配對購買的商品劃到乙個集合裡,這樣就可以確定買了其中乙個就得買另乙個。最後就是01揹包...
洛谷 P1455 搭配購買
給定n件物品 容量為sum的揹包,購買一件物品需要購買它所依賴 的物品,求最大價值 1 並查集 2 tarjan縮點 本文採取第二種方法 將乙個強連通塊縮成乙個點,費用和價值累加,最後揹包dp即可 邊集 原圖 edge i 乙個點是否在棧內 instack i 1或0 新圖 bcc cnt 新節點費...