标签:位置 strong 包含 pac ali name others 输入 就是
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9169 Accepted Submission(s): 5343
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define inf 0x3f3f3f3f 4 int first[220],tot; 5 int f[210][210]; 6 struct Edge 7 { 8 int v,next; 9 }e[500]; 10 void add(int u,int v) 11 { 12 e[tot].v=v; 13 e[tot].next=first[u]; 14 first[u]=tot++; 15 } 16 int b[220],M,N; 17 int dfs(int u) 18 { 19 f[u][1]=b[u]; 20 int s=1; 21 for(int i=first[u];~i;i=e[i].next){ 22 int v=e[i].v; 23 int son=dfs(v); 24 s+=son; 25 for(int j=M+1;j>=1;--j){ 26 for(int k=1;j-1>=k&&k<=son;++k){ 27 f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]); 28 } 29 } 30 } 31 return s; 32 } 33 int main() 34 { 35 int n,m,i,j,k; 36 while(cin>>n>>m&&(n||m)){ 37 N=n,M=m; 38 memset(f,0,sizeof(f)); 39 memset(first,-1,sizeof(first)); 40 tot=0; 41 for(i=1;i<=n;++i){ 42 scanf("%d%d",&k,&b[i]); 43 add(k,i); 44 } 45 dfs(0); 46 //cout<<f[1][1]<<‘ ‘<<f[2][1]<<‘ ‘<<f[3][1]<<endl; 47 cout<<f[0][m+1]<<endl; 48 } 49 return 0; 50 }
标签:位置 strong 包含 pac ali name others 输入 就是
原文地址:https://www.cnblogs.com/zzqc/p/8875851.html