Submission #1477509
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].ff+a[l][i].ss>ub)cur++; if(cur<(int)a[r].size()) { a[x].pb(mp(a[l][i].ff+v[x],a[r][cur].ss+v[x])); a[x].pb(mp(a[r][cur].ss+v[x],a[l][i].ff+v[x])); } } cur=0; for(int i=(int)a[r].size()-1;i>=0;i--) { while(cur<(int)a[l].size()&&a[l][cur].ff+a[r][i].ss>ub)cur++; if(cur<(int)a[l].size()) { a[x].pb(mp(a[r][i].ff+v[x],a[l][cur].ss+v[x])); a[x].pb(mp(a[l][cur].ss+v[x],a[r][i].ff+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(i==0||a[x][cur-1].ff>a[x][i].ff||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 | 2924 Byte |
Status | WA |
Exec Time | 506 ms |
Memory | 28544 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 1400 | ||||||
Status |
|
|
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 | 9 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 | WA | 8 ms | 6656 KB |
007.txt | WA | 8 ms | 6656 KB |
008.txt | WA | 8 ms | 6656 KB |
009.txt | WA | 8 ms | 6656 KB |
010.txt | WA | 426 ms | 20736 KB |
011.txt | WA | 421 ms | 20736 KB |
012.txt | WA | 415 ms | 20736 KB |
013.txt | WA | 401 ms | 20736 KB |
014.txt | WA | 433 ms | 20736 KB |
015.txt | WA | 422 ms | 20736 KB |
016.txt | WA | 405 ms | 20736 KB |
017.txt | WA | 409 ms | 20736 KB |
018.txt | WA | 399 ms | 20736 KB |
019.txt | WA | 394 ms | 20352 KB |
020.txt | WA | 422 ms | 20736 KB |
021.txt | WA | 417 ms | 20608 KB |
022.txt | WA | 424 ms | 20736 KB |
023.txt | WA | 420 ms | 20736 KB |
024.txt | WA | 421 ms | 20736 KB |
025.txt | WA | 399 ms | 20736 KB |
026.txt | WA | 320 ms | 18304 KB |
027.txt | WA | 441 ms | 20864 KB |
028.txt | WA | 315 ms | 18304 KB |
029.txt | WA | 310 ms | 18304 KB |
030.txt | WA | 370 ms | 20352 KB |
031.txt | WA | 441 ms | 20352 KB |
032.txt | WA | 452 ms | 20352 KB |
033.txt | WA | 366 ms | 20352 KB |
034.txt | WA | 372 ms | 20352 KB |
035.txt | AC | 506 ms | 20224 KB |
036.txt | AC | 368 ms | 20224 KB |
037.txt | AC | 349 ms | 19840 KB |
038.txt | AC | 371 ms | 20352 KB |
039.txt | AC | 228 ms | 16256 KB |
040.txt | AC | 382 ms | 20480 KB |
041.txt | AC | 449 ms | 20480 KB |
042.txt | AC | 465 ms | 20480 KB |
043.txt | AC | 443 ms | 20480 KB |
044.txt | AC | 279 ms | 28544 KB |
045.txt | AC | 301 ms | 24448 KB |
046.txt | AC | 282 ms | 25728 KB |
047.txt | AC | 273 ms | 24704 KB |
048.txt | AC | 277 ms | 27264 KB |
049.txt | AC | 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 | 3 ms | 6528 KB |