Submission #1477469
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=0;i<(int)a[l].size();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])); } cur=0; for(int i=0;i<(int)a[r].size();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])); } 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<cur;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); } LL l=0,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 | 2492 Byte |
Status | WA |
Exec Time | 364 ms |
Memory | 23424 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 | 7 ms | 6656 KB |
001.txt | WA | 6 ms | 6656 KB |
002.txt | WA | 6 ms | 6656 KB |
003.txt | WA | 6 ms | 6656 KB |
004.txt | WA | 6 ms | 6656 KB |
005.txt | WA | 6 ms | 6656 KB |
006.txt | WA | 6 ms | 6656 KB |
007.txt | WA | 6 ms | 6656 KB |
008.txt | WA | 6 ms | 6656 KB |
009.txt | WA | 6 ms | 6656 KB |
010.txt | WA | 345 ms | 15488 KB |
011.txt | WA | 342 ms | 15488 KB |
012.txt | WA | 315 ms | 15488 KB |
013.txt | WA | 336 ms | 15488 KB |
014.txt | WA | 302 ms | 15488 KB |
015.txt | WA | 298 ms | 15488 KB |
016.txt | WA | 341 ms | 15488 KB |
017.txt | WA | 288 ms | 15488 KB |
018.txt | WA | 308 ms | 15488 KB |
019.txt | WA | 349 ms | 15488 KB |
020.txt | WA | 337 ms | 15488 KB |
021.txt | WA | 297 ms | 15488 KB |
022.txt | WA | 364 ms | 15488 KB |
023.txt | WA | 292 ms | 15488 KB |
024.txt | WA | 334 ms | 15488 KB |
025.txt | WA | 344 ms | 15488 KB |
026.txt | WA | 311 ms | 14848 KB |
027.txt | WA | 304 ms | 15488 KB |
028.txt | WA | 302 ms | 14848 KB |
029.txt | WA | 314 ms | 14848 KB |
030.txt | WA | 200 ms | 15104 KB |
031.txt | WA | 328 ms | 15232 KB |
032.txt | WA | 289 ms | 15104 KB |
033.txt | WA | 203 ms | 15104 KB |
034.txt | WA | 199 ms | 15232 KB |
035.txt | WA | 340 ms | 15104 KB |
036.txt | WA | 200 ms | 15104 KB |
037.txt | WA | 205 ms | 15104 KB |
038.txt | WA | 199 ms | 15104 KB |
039.txt | AC | 223 ms | 14208 KB |
040.txt | AC | 184 ms | 15232 KB |
041.txt | AC | 363 ms | 15232 KB |
042.txt | AC | 312 ms | 15232 KB |
043.txt | AC | 266 ms | 15232 KB |
044.txt | AC | 172 ms | 23424 KB |
045.txt | WA | 219 ms | 19840 KB |
046.txt | WA | 207 ms | 20864 KB |
047.txt | WA | 216 ms | 20096 KB |
048.txt | WA | 196 ms | 22272 KB |
049.txt | WA | 3 ms | 6528 KB |
example0.txt | AC | 3 ms | 6528 KB |
example1.txt | AC | 3 ms | 6528 KB |
example2.txt | WA | 3 ms | 6528 KB |
example3.txt | WA | 3 ms | 6528 KB |