Submission #1477536


Source Code Expand

// This amazing code is by Eric Sunli Chen.
#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <utility>
#include <vector>
using namespace std;
template<typename T> void get_int(T &x)
{
	char t=getchar();
	bool neg=false;
	x=0;
	for(; (t>'9'||t<'0')&&t!='-'; t=getchar());
	if(t=='-')neg=true,t=getchar();
	for(; t<='9'&&t>='0'; t=getchar())x=x*10+t-'0';
	if(neg)x=-x;
}
template<typename T> void print_int(T x)
{
	if(x<0)putchar('-'),x=-x;
	short a[20]= {},sz=0;
	while(x>0)a[sz++]=x%10,x/=10;
	if(sz==0)putchar('0');
	for(int i=sz-1; i>=0; i--)putchar('0'+a[i]);
}
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define get1(a) get_int(a)
#define get2(a,b) get1(a),get1(b)
#define get3(a,b,c) get1(a),get2(b,c)
#define printendl(a) print_int(a),puts("")
typedef long long LL;
typedef unsigned long long uLL;
typedef pair<LL,LL> pii;
const int inf=0x3f3f3f3f;
const LL Linf=1ll<<61;
const double pi=acos(-1.0);

vector<int> g[133333];
vector<pii> a[133333];

LL ub;
int n,v[133333];
void dfs(int x)
{
	if((int)g[x].size()==0)
	{
		a[x].pb(mp(v[x],v[x]));
		return;
	}
	
	int l=g[x][0],r=g[x][1],cur=0;
	dfs(l);dfs(r);
	for(int i=(int)a[l].size()-1;i>=0;i--)
	{
		while(cur<(int)a[r].size()&&a[r][cur].ss+a[l][i].ff>ub)cur++;
		if(cur<(int)a[r].size())
		{
			a[x].pb(mp(a[l][i].ss+v[x],a[r][cur].ff+v[x]));
			a[x].pb(mp(a[r][cur].ff+v[x],a[l][i].ss+v[x]));
		}
	}
	cur=0;
	for(int i=(int)a[r].size()-1;i>=0;i--)
	{
		while(cur<(int)a[l].size()&&a[l][cur].ss+a[r][i].ff>ub)cur++;
		if(cur<(int)a[l].size())
		{
			a[x].pb(mp(a[r][i].ss+v[x],a[l][cur].ff+v[x]));
			a[x].pb(mp(a[l][cur].ff+v[x],a[r][i].ss+v[x]));
		}
	}/**/
/*	for(int i=0;i<(int)a[l].size();i++)for(int j=0;j<a[r].size();j++)
	{
		if(a[l][i].ff+a[r][j].ss<=ub)a[x].pb(mp(a[l][i].ss+v[x],a[r][j].ff+v[x]));
		if(a[l][i].ss+a[r][j].ff<=ub)a[x].pb(mp(a[l][i].ff+v[x],a[r][j].ss+v[x]));
	}/**/
	sort(a[x].begin(),a[x].end());
	cur=0;
	for(int i=0;i<(int)a[x].size();i++)
	{
		if(cur==0||a[x][cur-1].ss>a[x][i].ss)
			a[x][cur++]=a[x][i];
	}
	a[x].resize(cur);
//	printf("x= %d\n",x);
//	for(int i=0;i<(int)a[x].size();i++)printf("pair= %d %d\n",a[x][i].ff,a[x][i].ss);
//	puts("");
}
bool check(LL x)
{
	ub=x;
	for(int i=1;i<=n;i++)
	{
		a[i].clear();
		a[i].swap(a[i]);
	}
	dfs(1);
	if(a[1].size()>0)return true;
	else return false;
}
int main()
{
	get1(n);
	for(int i=2,a;i<=n;i++)
	{
		get2(a,v[i]);
		g[a].pb(i);
	}
//	printf("check %d\n",check(15));
	LL l=-1,r=1ll<<40,mid;
	while(l<r-1)
	{
		mid=(l+r)>>1;
		if(check(mid))r=mid;
		else l=mid;
	}
	printendl(r);/**/
	return 0;
}

Submission Info

Submission Time
Task E - Shik and Travel
User OhWeOnFire
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2899 Byte
Status WA
Exec Time 496 ms
Memory 28544 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1400
Status
AC × 4
AC × 18
WA × 36
Set Name Test Cases
Sample example0.txt, example1.txt, example2.txt, example3.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, example0.txt, example1.txt, example2.txt, example3.txt
Case Name Status Exec Time Memory
000.txt WA 8 ms 6656 KB
001.txt WA 8 ms 6656 KB
002.txt WA 8 ms 6656 KB
003.txt WA 8 ms 6656 KB
004.txt WA 8 ms 6656 KB
005.txt WA 8 ms 6656 KB
006.txt AC 8 ms 6656 KB
007.txt AC 8 ms 6656 KB
008.txt WA 8 ms 6656 KB
009.txt WA 8 ms 6656 KB
010.txt WA 419 ms 19072 KB
011.txt WA 401 ms 18944 KB
012.txt WA 440 ms 18944 KB
013.txt WA 407 ms 18944 KB
014.txt WA 428 ms 19072 KB
015.txt WA 435 ms 18944 KB
016.txt WA 411 ms 18944 KB
017.txt WA 433 ms 18944 KB
018.txt AC 438 ms 18944 KB
019.txt WA 404 ms 18816 KB
020.txt AC 435 ms 18944 KB
021.txt WA 404 ms 18944 KB
022.txt WA 423 ms 18944 KB
023.txt WA 437 ms 18944 KB
024.txt WA 448 ms 18944 KB
025.txt AC 451 ms 18944 KB
026.txt AC 389 ms 17792 KB
027.txt WA 443 ms 18944 KB
028.txt AC 366 ms 17792 KB
029.txt AC 367 ms 17792 KB
030.txt WA 300 ms 18304 KB
031.txt WA 444 ms 18304 KB
032.txt WA 429 ms 18304 KB
033.txt WA 290 ms 18304 KB
034.txt WA 293 ms 18304 KB
035.txt WA 426 ms 18304 KB
036.txt WA 307 ms 18304 KB
037.txt WA 283 ms 18176 KB
038.txt WA 296 ms 18304 KB
039.txt AC 322 ms 16256 KB
040.txt AC 304 ms 21120 KB
041.txt AC 461 ms 21120 KB
042.txt AC 496 ms 21248 KB
043.txt AC 476 ms 21120 KB
044.txt AC 259 ms 28544 KB
045.txt WA 298 ms 24448 KB
046.txt WA 298 ms 25600 KB
047.txt WA 293 ms 24704 KB
048.txt WA 300 ms 27264 KB
049.txt WA 3 ms 6528 KB
example0.txt AC 3 ms 6528 KB
example1.txt AC 3 ms 6528 KB
example2.txt AC 3 ms 6528 KB
example3.txt AC 4 ms 6528 KB