Submission #1691398


Source Code Expand

#include<cstdio>
#include<algorithm>
using namespace std;
inline int read()
{
	int x;char c;
	while((c=getchar())<'0'||c>'9');
	for(x=c-'0';(c=getchar())>='0'&&c<='9';)x=x*10+c-'0';
	return x;
}
#define MN 200000
#define K 18
struct edge{int nx,t;}e[MN*4+5];
int A[MN+5],B[MN+5],en,fa[K][MN+5],d[MN+5],ans;
inline void ins(int*h,int x,int y)
{
	e[++en]=(edge){h[x],y};h[x]=en;
	e[++en]=(edge){h[y],x};h[y]=en;
}
void pre(int x)
{
	for(int i=B[x];i;i=e[i].nx)if(e[i].t!=fa[0][x])
		d[e[i].t]=d[fa[0][e[i].t]=x]+1,pre(e[i].t);
}
int lca(int x,int y)
{
	if(d[x]<d[y])swap(x,y); 
	int k=d[x]-d[y],i;
	for(i=0;k;k>>=1,++i)if(k&1)x=fa[i][x];
	if(x==y)return x;
	for(i=K;i--;)if(fa[i][x]!=fa[i][y])x=fa[i][x],y=fa[i][y];
	return fa[0][x];
}
void solve(int x,int y,int f,int p)
{
	if(x==y)return;
	ans=max(ans,d[x]+d[y]-d[lca(x,y)]*2+p);
	for(int i=A[x];i;i=e[i].nx)if(e[i].t!=f&&e[i].t!=y)
	{
		if(d[x]+d[e[i].t]-d[lca(x,e[i].t)]*2>2)ans=2e9;
		if(lca(e[i].t,y)==y)
		{
			int t=e[i].t,k=d[t]-d[y]-1,j;
			for(j=0;k;k>>=1,++j)if(k&1)t=fa[j][t];
			solve(e[i].t,t,x,p+1);
		}
		else solve(e[i].t,fa[0][y],x,p+1);
	}
}
int main()
{
	int n,x,y,i,j;
	n=read();x=read();y=read();
	for(i=1;i<n;++i)ins(A,read(),read());
	for(i=1;i<n;++i)ins(B,read(),read());
	pre(1);
	for(i=1;i<K;++i)for(j=1;j<=n;++j)fa[i][j]=fa[i-1][fa[i-1][j]];
	solve(x,y,0,0);
	printf("%d",ans>1e9?-1:ans<<1);
}

Submission Info

Submission Time
Task E - Sugigma: The Showdown
User ditoly
Language C++14 (GCC 5.4.1)
Score 1400
Code Size 1429 Byte
Status AC
Exec Time 121 ms
Memory 32768 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1400 / 1400
Status
AC × 5
AC × 103
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 65 ms 22656 KB
doublestar1 AC 62 ms 22528 KB
doublestar2 AC 65 ms 22656 KB
doublestar3 AC 64 ms 22528 KB
doublestar4 AC 69 ms 22784 KB
doublestar5 AC 66 ms 22784 KB
doublestar6 AC 62 ms 22528 KB
doublestar7 AC 62 ms 22528 KB
example0 AC 4 ms 16512 KB
example1 AC 4 ms 16512 KB
example2 AC 4 ms 16512 KB
example3 AC 4 ms 16512 KB
example4 AC 4 ms 16512 KB
giri0 AC 66 ms 22784 KB
giri1 AC 66 ms 22656 KB
giri2 AC 71 ms 22656 KB
giri3 AC 66 ms 22656 KB
giri4 AC 71 ms 22656 KB
giri5 AC 73 ms 22912 KB
giri6 AC 74 ms 22784 KB
giri7 AC 66 ms 22656 KB
giri8 AC 73 ms 22784 KB
giri9 AC 69 ms 22784 KB
maxrand0 AC 106 ms 22784 KB
maxrand1 AC 102 ms 22656 KB
maxrand2 AC 107 ms 22784 KB
maxrand3 AC 99 ms 22656 KB
maxrand4 AC 101 ms 22656 KB
maxrand5 AC 97 ms 22656 KB
maxrand6 AC 102 ms 22656 KB
maxrand7 AC 100 ms 22656 KB
maxrand8 AC 103 ms 22656 KB
maxrand9 AC 100 ms 22656 KB
narashi0 AC 69 ms 22656 KB
narashi1 AC 65 ms 22656 KB
narashi2 AC 67 ms 22656 KB
narashi3 AC 70 ms 22656 KB
narashi4 AC 71 ms 22784 KB
narashi5 AC 67 ms 22656 KB
narashi6 AC 70 ms 22656 KB
narashi7 AC 66 ms 22784 KB
narashi8 AC 69 ms 22784 KB
narashi9 AC 69 ms 22656 KB
ok0 AC 86 ms 30080 KB
ok1 AC 91 ms 29312 KB
ok2 AC 87 ms 26240 KB
ok3 AC 94 ms 28928 KB
ok4 AC 78 ms 28544 KB
ok5 AC 91 ms 28672 KB
ok6 AC 87 ms 31744 KB
ok7 AC 83 ms 28544 KB
ok8 AC 91 ms 27264 KB
ok9 AC 96 ms 29568 KB
ouh0 AC 63 ms 22912 KB
ouh1 AC 93 ms 24192 KB
ouh2 AC 69 ms 24192 KB
ouh3 AC 106 ms 25856 KB
ouh4 AC 71 ms 23808 KB
ouh5 AC 121 ms 29952 KB
ouh6 AC 85 ms 26752 KB
ouh7 AC 98 ms 24704 KB
ouh8 AC 86 ms 25856 KB
ouh9 AC 120 ms 30976 KB
same0 AC 64 ms 22656 KB
same1 AC 64 ms 22656 KB
same2 AC 55 ms 22784 KB
same3 AC 55 ms 22784 KB
same4 AC 55 ms 22656 KB
same5 AC 65 ms 22656 KB
same6 AC 55 ms 22656 KB
same7 AC 65 ms 22656 KB
same8 AC 52 ms 22656 KB
same9 AC 74 ms 22784 KB
sameline0 AC 102 ms 27648 KB
sameline1 AC 107 ms 32128 KB
sameline2 AC 75 ms 28544 KB
sameline3 AC 97 ms 27520 KB
sameline4 AC 67 ms 27136 KB
sameline5 AC 101 ms 30592 KB
sameline6 AC 78 ms 26368 KB
sameline7 AC 98 ms 32768 KB
sameline8 AC 75 ms 27520 KB
sameline9 AC 88 ms 28800 KB
star0 AC 56 ms 22656 KB
star1 AC 63 ms 22656 KB
star2 AC 49 ms 22656 KB
star3 AC 56 ms 22656 KB
star4 AC 58 ms 22656 KB
star5 AC 65 ms 22656 KB
star6 AC 50 ms 22656 KB
star7 AC 57 ms 22656 KB
star8 AC 59 ms 22656 KB
star9 AC 65 ms 22784 KB
supersmall0 AC 4 ms 16512 KB
supersmall1 AC 4 ms 16512 KB
supersmall2 AC 4 ms 16512 KB
supersmall3 AC 4 ms 16512 KB
supersmall4 AC 4 ms 16512 KB
supersmall5 AC 4 ms 16512 KB
supersmall6 AC 4 ms 16512 KB
supersmall7 AC 4 ms 16512 KB
supersmall8 AC 4 ms 16512 KB
supersmall9 AC 4 ms 16512 KB