Language: C++


#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("IL")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("IL-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("IL-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("IL-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#define fastcall __attribute__((optimize("-O3")))
#define IL __inline__ __attribute__((always_inline))
#include <bits/stdc++.h>
#define getchar getchar_unlocked
#define putchar putchar_unlocked
#define mp make_pair
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAXN = 1e5 + 10;
int n, fa[MAXN];
set<int> s[MAXN];
queue<pii> q;
map<ll, int> g;
template <class T>
IL void _read(T &u)
{
    u = 0;
    char t = getchar();
    while (!isdigit(t)) t = getchar();
    while (isdigit(t))
    {
        u = u * 10 + t - '0';
        t = getchar();
    }
}
template <class T>
IL void print(T x)
{
    if(x < 0)
    {
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}
IL int getfa(int u)
{
	return fa[u] == u ? u : (fa[u] = getfa(fa[u]));
}
IL ll getid(int x, int y)
{
	if(x > y) swap(x, y);
	return 1ll * n * y + x;
}
IL void ae(int u, int v)
{
	s[u].insert(v);
	s[v].insert(u);
	ll eid = getid(u, v);
	int t = ++g[eid];
	if(t == 2)
		q.push(mp(u, v));
}
IL void re(int u, int v)
{
	s[u].erase(v);
	s[v].erase(u);
	g.erase(getid(u, v));
}
IL bool solve()
{
	for(int i = 1; i <= n; ++i) fa[i] = i;
	for(int i = 1; i < n; ++i)
	{
		int u, v;
		if(q.empty())
			return false;
		u = q.front().first;
		v = q.front().second;
		q.pop();
		u = getfa(u);
		v = getfa(v);
		if(s[u].size() > s[v].size())
			swap(u, v);
		fa[u] = v;
		re(u, v);
		for(set<int> :: iterator i = s[u].begin(), j; i != s[u].end(); i = j)
		{
			j = i; ++j; 
			int x = *i;
			x = getfa(x);
			re(u, x);
			ae(v, x);
		}
	}
	return true;
}
int main()
{
	_read(n);
	for(int i = 1, u, v; i <= (n - 1) << 1; ++i)
	{
		_read(u), _read(v);
		ae(u, v);
	}
	puts(solve() ? "YES" : "NO");
	return 0;
}

Compiler output:
a.cc:5:26: warning: bad option '-fIL' to pragma 'optimize' [-Wpragmas]
    5 | #pragma GCC optimize("IL")
      |                          ^
a.cc:23:39: warning: bad option '-fwhole-program' to pragma 'optimize' [-Wpragmas]
   23 | #pragma GCC optimize("-fwhole-program")
      |                                       ^
a.cc:26:36: warning: bad option '-fIL-functions' to pragma 'optimize' [-Wpragmas]
   26 | #pragma GCC optimize("IL-functions")
      |                                    ^
a.cc:30:41: warning: bad option '-fstrict-overflow' to pragma 'optimize' [-Wpragmas]
   30 | #pragma GCC optimize("-fstrict-overflow")
      |                                         ^
a.cc:32:41: warning: bad option '-fcse-skip-blocks' to pragma 'optimize' [-Wpragmas]
   32 | #pragma GCC optimize("-fcse-skip-blocks")
      |                                         ^
a.cc:41:42: warning: bad option '-fIL-small-functions' to pragma 'optimize' [-Wpragmas]
   41 | #pragma GCC optimize("IL-small-functions")
      |                                          ^
a.cc:46:51: warning: bad option '-funsafe-loop-optimizations' to pragma 'optimize' [-Wpragmas]
   46 | #pragma GCC optimize("-funsafe-loop-optimizations")
      |                                                   ^
a.cc:47:48: warning: bad option '-fIL-functions-called-once' to pragma 'optimize' [-Wpragmas]
   47 | #pragma GCC optimize("IL-functions-called-once")
      |                                                ^
a.cc:64:19: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
   64 | IL void _read(T &u)
      |                   ^
a.cc:64:19: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:64:19: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
   76 | IL void print(T x)
      |                  ^
a.cc:76:18: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:76:18: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
   87 | IL int getfa(int u)
      |                   ^
a.cc:87:19: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:87:19: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
   91 | IL ll getid(int x, int y)
      |                         ^
a.cc:91:25: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:91:25: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
   96 | IL void ae(int u, int v)
      |                        ^
a.cc:96:24: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:96:24: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
  105 | IL void re(int u, int v)
      |                        ^
a.cc:105:24: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:105:24: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
  111 | IL bool solve()
      |               ^
a.cc:111:15: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:111:15: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fIL' to attribute 'optimize' [-Wattributes]
  139 | int main()
      |          ^
a.cc:139:10: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fIL-functions' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fIL-small-functions' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
a.cc:139:10: warning: bad option '-fIL-functions-called-once' to attribute 'optimize' [-Wattributes]
In function 'int getfa(int)',
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40:
a.cc:87:8: error: inlining failed in call to 'always_inline' 'int getfa(int)': recursive inlining
   87 | IL int getfa(int u)
      |        ^~~~~
a.cc:89:47: note: called from here
   89 |         return fa[u] == u ? u : (fa[u] = getfa(fa[u]));
      |                                          ~~~~~^~~~~~~
In function 'int getfa(int)',
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'bool solve()' at a.cc:122:12,
    inlined from 'int main()' at a.cc:147:12:
a.cc:87:8: error: inlining failed in call to 'always_inline' 'int getfa(int)': 
   87 | IL int getfa(int u)
      |        ^~~~~
a.cc:89:47: note: called from here
   89 |         return fa[u] == u ? u : (fa[u] = getfa(fa[u]));
      |                                          ~~~~~^~~~~~~
In function 'int getfa(int)',
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'int getfa(int)' at a.cc:89:40,
    inlined from 'bool solve()' at a.cc:123:12,
    inlined from 'int main()' at a.cc:147:12:
a.cc:87:8: error: inlining failed in call to 'always_inline' 'int getfa(int)': 
   87 | IL int getfa(int u)
      |        ^~~~~
a.cc:89:47: note: called from here
   89 |         return fa[u] == u ? u : (fa[u] = getfa(fa[u]));
      |                                          ~~~~~^~~~~~~
In function 'int getfa(int)',
    inlined f