1. 程式人生 > >濤濤的Party

濤濤的Party

log using pty () ear limit 整型 color org

濤濤的Party

Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 25 Accepted Submission(s) : 12

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

濤神因為極強,並且特別帥,所以擁有很多美女的聯系方式,每個美女都有自己的食量以及魅力值,大家都知道,物以類聚,人以群分,朋友的朋友就是自己的朋友,所以美女一般都是有自己的美女朋友圈,而且這些美女特別團結,如果她的朋友有沒有被邀請的她就不會答應邀請。濤濤想辦一個party,但是他只準備了w kg的食物,他想獲得最大的美女魅力值,不知道怎麽邀請美女,於是他去問你,你能告訴他,他能獲得的美女魅力數是多少嗎

Input

數據有多組,第一行輸入n,m和w(1≤n≤1000,0≤m≤min(n*(n-1)/2,10^5),1≤w≤1000);第二行輸入n個整型變量w1,w2,...,wn(1≤wi≤1000)代表美女i的食量;第三行輸入n個整型變量b1,b2,...,bn(1≤bi≤106)代表美女i的魅力值;接下來的m行輸入兩個數x和y(1≤xi,yi≤n,xi≠yi),代表x和y是朋友

Output

輸出濤濤能獲得的最大魅力值

Sample Input

3 1 5
3 2 5
2 4 2
1 2
4 2 11
2 4 6 6
6 4 2 1
1 2
2 3

Sample Output

6
1

01背包問題和dfs加個鄰接表;
用直接代碼了;
 1 #include <iostream> //1004
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <vector>
 5 #include <stack>
 6 #define M 1005
 7 using namespace std;
 8 
 9 struct Node{
10     int a,b;
11 }node[M];
12 int dp[M];
13 vector<int> v[M];
14 stack<int> s1,s2;
15
Node eat[M]; 16 int ap[M]; 17 18 void dfs(int i){ 19 ap[i]=1; 20 s1.push(node[i].a); 21 s2.push(node[i].b); 22 for(int k=0;k<v[i].size();k++){ 23 if(ap[v[i][k]]!=1) 24 dfs(v[i][k]); 25 } 26 } 27 int main(){ 28 int n,m,w; 29 while(scanf("%d%d%d",&n,&m,&w)!=EOF){ 30 for(int i=1;i<=n;i++){ 31 scanf("%d",&node[i].a); 32 } 33 for(int i=1;i<=n;i++){ 34 scanf("%d",&node[i].b); 35 } 36 for(int i=0;i<m;i++){ 37 int x,y; 38 scanf("%d%d",&x,&y); 39 v[x].push_back(y); 40 v[y].push_back(x); 41 } 42 int l=1; 43 memset(eat,0,sizeof(eat)); 44 for(int i=1;i<=n;i++){ 45 if(ap[i]==0){ 46 dfs(i); 47 while(!s1.empty()){ 48 eat[l].a+=s1.top(); 49 eat[l].b+=s2.top(); 50 s1.pop(); 51 s2.pop(); 52 } 53 l++; 54 } 55 } 56 for(int i=1;i<l;i++){ 57 for(int j=w;j>=eat[i].a;j--){ 58 dp[j]=max(dp[j],dp[j-eat[i].a]+eat[i].b ); 59 } 60 } 61 printf("%d\n",dp[w]); 62 for(int i=1;i<=n;i++) 63 v[i].clear(); 64 memset(ap,0,sizeof(ap)); 65 memset(dp,0,sizeof(dp)); 66 } 67 return 0; 68 }


濤濤的Party