求大佬解答:请问下面两个代码哪个是对的?

P3360 偷天换日

``` #include<iostream> #include<cstdio> using namespace std; #define N 610 struct edge { int next; int to; int w; } e[N]; int head[N]; int dp[N][N]; int cnt,T; int t,x,num,val,cost; void add(int a,int b,int t){ e[++cnt].to=b; e[cnt].next=head[a]; e[cnt].w=t*2; head[a]=cnt; } void build(int fa){ num++; int son=num; cin>>t; add(fa,son,t); cin>>x; if(x) { for(int i=1;i<=x;i++){ cin>>val>>cost; for(int j=T;j>=cost;j--) dp[son][j]=max(dp[son][j],dp[son][j-cost]+val); } } else { build(son); build(son); } return; } void dfs(int u){ int v; for(int i=head[u];i;i=e[i].next){ v=e[i].to; dfs(v); for(int j=T;j>=e[i].w;j--) for(int k=0;k<=j-e[i].w;k++) dp[u][j]=max(dp[u][j],dp[u][k]+dp[v][j-e[i].w-k]); } return; } int main() { cin>>T; T--; build(0); dfs(0); cout<<dp[0][T]; return 0; } 这个是下面的代码 ```
by OI_lover @ 2018-10-03 12:30:23


有区别?
by 业余门槛 @ 2018-10-03 13:24:39


|