Submission #1768878


Source Code Expand

#include <bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
#define mset(x, y) memset(x, y, sizeof x)
#define mcpy(x, y) memcpy(x, y, sizeof x)
using namespace std;

typedef long long LL;
typedef pair <int, int> pii;

inline int Read()
{
	int x = 0, f = 1, c = getchar();
	for (; !isdigit(c); c = getchar())
		if (c == '-')
			f = -1;
	for (;  isdigit(c); c = getchar())
		x = x * 10 + c - '0';
	return x * f;
}

const int MAXN = 100005;

multiset <int> adj[MAXN];
map <pii, int> cnt, use;
int n, f[MAXN];
queue <pii> q;

inline pii Mak(int x, int y)
{
	return x < y ? mp(x, y) : mp(y, x);
}

inline int Find(int x)
{
	while (x ^ f[x])
		x = f[x] = f[f[x]];
	return x;
}

int main()
{
#ifdef wxh010910
	freopen("data.in", "r", stdin);
#endif
	n = Read();
	for (int i = 1; i <= n; i ++)
		f[i] = i;
	for (int i = 1, x, y; i <= n - 1 << 1; i ++)
	{
		x = Read(), y = Read();
		adj[x].insert(y), adj[y].insert(x);
		if (cnt[Mak(x, y)] ++ && use.find(Mak(x, y)) == use.end())
			q.push(Mak(x, y)), use[Mak(x, y)] = 1;
	}
	for (int i = 1, x, y; i < n; i ++)
	{
		do
		{
			if (q.empty())
				return puts("NO"), 0;
			x = Find(q.front().xx), y = Find(q.front().yy), q.pop();
		} while (x == y);
		if (adj[x].size() > adj[y].size())
			swap(x, y);
		f[x] = y;
		for (auto z : adj[x])
		{
			z = Find(z);
			if (z == y)
				continue;
			adj[y].insert(z), adj[z].insert(y);
			if (cnt[Mak(y, z)] ++ && use.find(Mak(y, z)) == use.end())
				q.push(Mak(y, z)), use[Mak(y, z)] = 1;
			adj[z].erase(adj[z].find(x));
		}
		adj[y].erase(adj[y].find(x)), adj[x].clear();
	}
	return puts("YES"), 0;
}

Submission Info

Submission Time
Task E - Blue and Red Tree
User wxh010910
Language C++14 (GCC 5.4.1)
Score 1400
Code Size 1708 Byte
Status AC
Exec Time 1001 ms
Memory 43264 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1400 / 1400
Status
AC × 3
AC × 53
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
in1.txt AC 4 ms 4992 KB
in10.txt AC 252 ms 36608 KB
in11.txt AC 648 ms 40576 KB
in12.txt AC 640 ms 40448 KB
in13.txt AC 643 ms 40704 KB
in14.txt AC 659 ms 40576 KB
in15.txt AC 652 ms 40576 KB
in16.txt AC 640 ms 40576 KB
in17.txt AC 653 ms 40576 KB
in18.txt AC 778 ms 40832 KB
in19.txt AC 662 ms 40704 KB
in2.txt AC 4 ms 4992 KB
in20.txt AC 680 ms 40704 KB
in21.txt AC 626 ms 40448 KB
in22.txt AC 633 ms 40448 KB
in23.txt AC 639 ms 40576 KB
in24.txt AC 668 ms 40576 KB
in25.txt AC 621 ms 40576 KB
in26.txt AC 652 ms 40704 KB
in27.txt AC 654 ms 40576 KB
in28.txt AC 655 ms 40576 KB
in29.txt AC 649 ms 40704 KB
in3.txt AC 3 ms 4992 KB
in30.txt AC 656 ms 40704 KB
in31.txt AC 743 ms 43136 KB
in32.txt AC 843 ms 43264 KB
in33.txt AC 794 ms 43008 KB
in34.txt AC 820 ms 43136 KB
in35.txt AC 750 ms 43136 KB
in36.txt AC 866 ms 43264 KB
in37.txt AC 1001 ms 43136 KB
in38.txt AC 673 ms 42496 KB
in39.txt AC 702 ms 42496 KB
in4.txt AC 253 ms 36608 KB
in40.txt AC 820 ms 42624 KB
in41.txt AC 746 ms 43136 KB
in42.txt AC 736 ms 43136 KB
in43.txt AC 742 ms 43008 KB
in44.txt AC 734 ms 43136 KB
in45.txt AC 734 ms 43264 KB
in46.txt AC 700 ms 42496 KB
in47.txt AC 698 ms 42496 KB
in5.txt AC 260 ms 36608 KB
in6.txt AC 695 ms 42496 KB
in7.txt AC 255 ms 36608 KB
in8.txt AC 285 ms 36608 KB
in9.txt AC 255 ms 36608 KB
sample1.txt AC 4 ms 4992 KB
sample2.txt AC 4 ms 4992 KB
sample3.txt AC 4 ms 4992 KB