未完成代码
查看原帖
未完成代码
51567
physics—LindseyWEI楼主2018/12/4 23:26
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector> 
#include<cmath>
#define LL long long
#define MAXN 500005
using namespace std;
int n,t,c;
int a[MAXN];
vector<int> adj[MAXN];
LL dp[MAXN];
bool cmp(int a,int b)
{
	return dp[a]<dp[b];
}
void dfs(int u)
{
	int v=0;
	if(adj[u].size()==0)
	{
		dp[u]=a[u];
	}
	else
	{
		for(int i=0;i<adj[u].size();i++)
		{
			v=adj[u][i];
			dfs(v);
			sort(adj[u].begin(),adj[u].end(),cmp);
			int num=ceil((double)a[u]*adj[u].size()/t);
			for(int i=0;i<num&&i<adj[u].size();i++)
			{
				dp[u]+=dp[v];
			}
		}
	}
	
}
int main()
{
	cin>>n>>t>>c;
	int b;
	for(int i=1;i<=n;i++)
	{
		cin>>b>>a[i];
		adj[b].push_back(i);
	}
	dfs(0);
	cout<<dp[0]<<endl;
	return 0;
} 
2018/12/4 23:26
加载中...