Submission #1442694
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<int,int> pii; const int inf=0x3f3f3f3f; const LL Linf=1ll<<61; const double pi=acos(-1.0); int n; struct tree1 { vector<int> g[200111]; int fa[200111][20],dep[200111]; void addedge(int u,int v) { g[u].pb(v); g[v].pb(u); } void dfs(int x,int f=0) { fa[x][0]=f; for(int i=0;i<(int)g[x].size();i++) if(g[x][i]!=f) { dep[g[x][i]]=dep[x]+1; dfs(g[x][i],x); } } void prework(int s) { dfs(s); for(int i=1;i<20;i++)for(int j=1;j<=n;j++)fa[j][i]=fa[fa[j][i-1]][i-1]; } int getlca(int x,int y) { if(dep[x]<dep[y])swap(x,y); for(int i=0;i<20;i++)if((dep[x]-dep[y]>>i)&1)x=fa[x][i]; if(x==y)return x; for(int i=19;i>=0;i--)if(fa[x][i]!=fa[y][i]) { x=fa[x][i]; y=fa[y][i]; } return fa[x][0]; } int dist(int x,int y) { return dep[x]+dep[y]-dep[getlca(x,y)]*2; } }m1; int sx,sy,ex[200111],ey[200111],ans; bool kill[200111]; vector<int> g[200111]; int dep[200111]; void dfs(int x,int f=0) { // printf("dfs %d %d d2= %d\n",x,f,m1.dep[x]); if(dep[x]>=m1.dep[x])return; ans=max(ans,m1.dep[x]*2); if(kill[x]) { puts("-1"); exit(0); } for(int i=0;i<(int)g[x].size();i++) if(g[x][i]!=f) { dep[g[x][i]]=dep[x]+1; dfs(g[x][i],x); } } int main() { get3(n,sx,sy); for(int i=1,u,v;i<n;i++)get2(ex[i],ey[i]); for(int i=1,u,v;i<n;i++) { get2(u,v); m1.addedge(u,v); } m1.prework(sy); for(int i=1;i<n;i++) { if(m1.dist(ex[i],ey[i])>=3)kill[ex[i]]=kill[ey[i]]=1; else { g[ex[i]].pb(ey[i]); g[ey[i]].pb(ex[i]); } } dfs(sx); printendl(ans); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Sugigma: The Showdown |
User | OhWeOnFire |
Language | C++14 (GCC 5.4.1) |
Score | 1400 |
Code Size | 2718 Byte |
Status | AC |
Exec Time | 178 ms |
Memory | 50688 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1400 / 1400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0, example1, example2, example3, example4 |
All | doublestar0, doublestar1, doublestar2, doublestar3, doublestar4, doublestar5, doublestar6, doublestar7, example0, example1, example2, example3, example4, giri0, giri1, giri2, giri3, giri4, giri5, giri6, giri7, giri8, giri9, maxrand0, maxrand1, maxrand2, maxrand3, maxrand4, maxrand5, maxrand6, maxrand7, maxrand8, maxrand9, narashi0, narashi1, narashi2, narashi3, narashi4, narashi5, narashi6, narashi7, narashi8, narashi9, ok0, ok1, ok2, ok3, ok4, ok5, ok6, ok7, ok8, ok9, ouh0, ouh1, ouh2, ouh3, ouh4, ouh5, ouh6, ouh7, ouh8, ouh9, same0, same1, same2, same3, same4, same5, same6, same7, same8, same9, sameline0, sameline1, sameline2, sameline3, sameline4, sameline5, sameline6, sameline7, sameline8, sameline9, star0, star1, star2, star3, star4, star5, star6, star7, star8, star9, supersmall0, supersmall1, supersmall2, supersmall3, supersmall4, supersmall5, supersmall6, supersmall7, supersmall8, supersmall9 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
doublestar0 | AC | 121 ms | 36216 KB |
doublestar1 | AC | 109 ms | 34424 KB |
doublestar2 | AC | 113 ms | 34936 KB |
doublestar3 | AC | 107 ms | 34296 KB |
doublestar4 | AC | 118 ms | 35704 KB |
doublestar5 | AC | 124 ms | 36856 KB |
doublestar6 | AC | 108 ms | 34296 KB |
doublestar7 | AC | 113 ms | 35320 KB |
example0 | AC | 4 ms | 11776 KB |
example1 | AC | 4 ms | 11776 KB |
example2 | AC | 4 ms | 11776 KB |
example3 | AC | 4 ms | 11776 KB |
example4 | AC | 4 ms | 11776 KB |
giri0 | AC | 143 ms | 41984 KB |
giri1 | AC | 145 ms | 40320 KB |
giri2 | AC | 143 ms | 40704 KB |
giri3 | AC | 154 ms | 40448 KB |
giri4 | AC | 157 ms | 40448 KB |
giri5 | AC | 162 ms | 41472 KB |
giri6 | AC | 151 ms | 41344 KB |
giri7 | AC | 147 ms | 40832 KB |
giri8 | AC | 148 ms | 40832 KB |
giri9 | AC | 146 ms | 41088 KB |
maxrand0 | AC | 140 ms | 34176 KB |
maxrand1 | AC | 131 ms | 33920 KB |
maxrand2 | AC | 133 ms | 34304 KB |
maxrand3 | AC | 129 ms | 33664 KB |
maxrand4 | AC | 127 ms | 33280 KB |
maxrand5 | AC | 128 ms | 33408 KB |
maxrand6 | AC | 130 ms | 33280 KB |
maxrand7 | AC | 130 ms | 33920 KB |
maxrand8 | AC | 126 ms | 33152 KB |
maxrand9 | AC | 136 ms | 33792 KB |
narashi0 | AC | 143 ms | 39808 KB |
narashi1 | AC | 144 ms | 40064 KB |
narashi2 | AC | 142 ms | 40192 KB |
narashi3 | AC | 146 ms | 40704 KB |
narashi4 | AC | 151 ms | 40960 KB |
narashi5 | AC | 147 ms | 40960 KB |
narashi6 | AC | 150 ms | 40704 KB |
narashi7 | AC | 155 ms | 41472 KB |
narashi8 | AC | 152 ms | 41216 KB |
narashi9 | AC | 143 ms | 40320 KB |
ok0 | AC | 156 ms | 45440 KB |
ok1 | AC | 160 ms | 46464 KB |
ok2 | AC | 161 ms | 44672 KB |
ok3 | AC | 162 ms | 46848 KB |
ok4 | AC | 148 ms | 43392 KB |
ok5 | AC | 160 ms | 44928 KB |
ok6 | AC | 152 ms | 44544 KB |
ok7 | AC | 150 ms | 42880 KB |
ok8 | AC | 164 ms | 45952 KB |
ok9 | AC | 157 ms | 44288 KB |
ouh0 | AC | 127 ms | 41600 KB |
ouh1 | AC | 139 ms | 42624 KB |
ouh2 | AC | 138 ms | 41984 KB |
ouh3 | AC | 147 ms | 43392 KB |
ouh4 | AC | 146 ms | 42880 KB |
ouh5 | AC | 149 ms | 44288 KB |
ouh6 | AC | 149 ms | 45184 KB |
ouh7 | AC | 140 ms | 42112 KB |
ouh8 | AC | 155 ms | 45184 KB |
ouh9 | AC | 153 ms | 45440 KB |
same0 | AC | 151 ms | 40832 KB |
same1 | AC | 153 ms | 40576 KB |
same2 | AC | 145 ms | 41344 KB |
same3 | AC | 144 ms | 41344 KB |
same4 | AC | 140 ms | 40192 KB |
same5 | AC | 146 ms | 40320 KB |
same6 | AC | 142 ms | 40832 KB |
same7 | AC | 147 ms | 40320 KB |
same8 | AC | 137 ms | 40064 KB |
same9 | AC | 153 ms | 41216 KB |
sameline0 | AC | 156 ms | 47360 KB |
sameline1 | AC | 173 ms | 50432 KB |
sameline2 | AC | 157 ms | 45696 KB |
sameline3 | AC | 162 ms | 46720 KB |
sameline4 | AC | 178 ms | 47872 KB |
sameline5 | AC | 169 ms | 48128 KB |
sameline6 | AC | 153 ms | 44800 KB |
sameline7 | AC | 165 ms | 50688 KB |
sameline8 | AC | 158 ms | 46592 KB |
sameline9 | AC | 160 ms | 46080 KB |
star0 | AC | 112 ms | 41588 KB |
star1 | AC | 102 ms | 41460 KB |
star2 | AC | 100 ms | 40820 KB |
star3 | AC | 109 ms | 41332 KB |
star4 | AC | 111 ms | 41716 KB |
star5 | AC | 113 ms | 41972 KB |
star6 | AC | 105 ms | 41204 KB |
star7 | AC | 111 ms | 41460 KB |
star8 | AC | 110 ms | 41460 KB |
star9 | AC | 116 ms | 42356 KB |
supersmall0 | AC | 4 ms | 11776 KB |
supersmall1 | AC | 4 ms | 11776 KB |
supersmall2 | AC | 4 ms | 11776 KB |
supersmall3 | AC | 4 ms | 11776 KB |
supersmall4 | AC | 4 ms | 11776 KB |
supersmall5 | AC | 4 ms | 11776 KB |
supersmall6 | AC | 4 ms | 11776 KB |
supersmall7 | AC | 4 ms | 11776 KB |
supersmall8 | AC | 4 ms | 11776 KB |
supersmall9 | AC | 4 ms | 11776 KB |