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 |
|
|
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 |