求助哇……自闭了……7h了……
查看原帖
求助哇……自闭了……7h了……
182691
SisconHL楼主2020/6/6 15:39
#include<iostream>

#define D if(debug)

using namespace std;

const int maxn=316;
const bool debug=false;

struct Node
{
	int son[maxn];
	int num;
	int sc;
	Node() {num=0;sc=-114514;}
	inline void addson(int i) {son[num++]=i;return;}
};

Node node[maxn];
int F[maxn][maxn][maxn];
bool booked[maxn];

int f(int root,int Num)
{
	//cout<<root<<' '<<Num<<endl;
	if(Num==0)	return node[root].sc;
	int Max=node[root].sc;
	int qwqwq=-1; int qaqaq=-2;
	for(register int k=0;k<Num;k++)
		for(register int v=0;v<node[root].num;v++)
		{
			if(booked[node[root].son[v]]) continue;
			booked[node[root].son[v]]=true;
		//	if(!F[root][Num-k-1][node[root].son[v]]) 
			F[root][Num-k-1][node[root].son[v]]=f(root,Num-k-1);
		//	if(!F[node[root].son[v]][k][node[root].son[v]]) 
			F[node[root].son[v]][k][node[root].son[v]]=f(node[root].son[v],k);
			int val=F[root][Num-k-1][node[root].son[v]]+F[node[root].son[v]][k][node[root].son[v]];
			if(val>Max) { Max=val; D qwqwq=node[root].son[v]; D qaqaq=k; }
			booked[node[root].son[v]]=false;
		}
	D cout<<qwqwq<<" "<<qaqaq<<endl;
	return Max;
}

int main()
{
	int n,m;	
	cin>>n>>m;
	int buf;
	for(register int i=1;i<=n;i++)
	{
		cin>>buf>>node[i].sc;
		node[buf].addson(i);
	}
	node[0].sc=0;
	cout<<f(0,m)<<endl;
	/*
	for(register int i=0;i<=7;i++)
		for(register int j=0;j<=4;j++)
			cout<<i<<' '<<j<<' '<<F[i][j]<<endl;
	*/
}
2020/6/6 15:39
加载中...