제출 #99946

#제출 시각아이디문제언어결과실행 시간메모리
99946TadijaSebezFireworks (APIO16_fireworks)C++11
7 / 100
10 ms7464 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
const int N=300050;
int par[N],len[N];
ll dep[N],dp[N],sz[N];
vector<int> E[N];
void DFS(int u)
{
	if(E[u].size()==0) return;
	vector<ll> work;
	for(int v:E[u])
	{
		DFS(v);
		dp[u]+=dp[v];
		work.pb(sz[v]+len[v]);
	}
	sort(work.begin(),work.end());
	int mid=(work.size()+1)/2;
	sz[u]=work[mid-1];
	for(ll p:work) dp[u]+=abs(sz[u]-p);
	//printf("u:%i dp:%lld sz:%lld\n",u,dp[u],sz[u]);
}
int main()
{
	int n,m;
	scanf("%i %i",&n,&m);
	n+=m;
	for(int i=2;i<=n;i++)
	{
		scanf("%i %i",&par[i],&len[i]);
		dep[i]=dep[par[i]]+len[i];
		E[par[i]].pb(i);
	}
	DFS(1);
	printf("%lld\n",dp[1]);
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

fireworks.cpp: In function 'int main()':
fireworks.cpp:28:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
fireworks.cpp:32:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%i %i",&par[i],&len[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...