求救 一个关于循环变量初始值的问题 自闭了
查看原帖
求救 一个关于循环变量初始值的问题 自闭了
127299
Young_Zn_Cu楼主2020/10/26 09:27

这里jjm+1m+1就是对的,从sz[u]sz[u]就是错的,但为什么从sz[u]sz[u]是错的呢,感觉没问题啊

#include <bits/stdc++.h>
using namespace std;
const int N=350;
int n,m,x,y,ans,f[N][N],sz[N],fir[N<<1],nxt[N<<1],to[N<<1],tot;
inline int read(){
	int cnt=0,f=1;char c=getchar();
	while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
	while(isdigit(c)){cnt=(cnt<<1)+(cnt<<3)+(c^48);c=getchar();}
	return cnt*f;
}
inline void add(int x,int y){nxt[++tot]=fir[x];fir[x]=tot;to[tot]=y;}
void dfs(int u){
	for(int i=fir[u];i;i=nxt[i]){
		int v=to[i];
		dfs(v);sz[u]+=sz[v]+1;
		for(int j=m+1;j;--j){//就是这个地方qwq
			for(int k=0;k<=j-1;++k){
				f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);
			}
		}
	}
}
signed main(){
	n=read(),m=read();
	for(int i=1;i<=n;++i) {x=read(),f[i][1]=read(),add(x,i);}
	dfs(0);
	printf("%d",f[0][m+1]);
	return 0;
}
2020/10/26 09:27
加载中...