Submission #992270


Source Code Expand

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <set>

#define REP(i,k,n) for(int i=k;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define INF 1<<30
#define mp make_pair

using namespace std;
typedef long long ll;
typedef pair<int,int> P;

struct UnionFind {
	vector<int> par, rank;
	int N;

	UnionFind(int n) {
		N = n;
		par.resize(n);
		rank.resize(n);

		rep(i, n) {
			par[i] = i;
			rank[i] = 0;
		}
	}

	int find(int x) {
		if(par[x] == x) return x;
		else return par[x] = find(par[x]);
	}

	void unite(int x, int y) {
		x = find(x);
		y = find(y);

		if(x == y) return;

		if(rank[x] < rank[y]) {
			par[x] = y;
		} else {
			par[y] = x;
			if(rank[x] == rank[y]) rank[x]++;
		}
	}

	bool same(int x, int y) {
		return find(x) == find(y);
	}

	int size() {
		int cnt = 0;
		rep(i, N) if(find(i) == i) cnt++;
		return cnt;
	}
};

int main() {
	int n, m;
	cin >> n >> m;

	set<int> st[m + 5];
	rep(i, n) {
		int k;
		cin >> k;

		rep(j, k) {
			int l;
			cin >> l;

			st[l].insert(i);
		}
	}

	// cout << "print set" << endl;
	// rep(i, m + 1) {
	// 	cout << i << " |";
	// 	each(it, st[i]) cout << *it + 1 << " ";
	// 	cout << endl;
	// }
	//
	UnionFind uf(n + 5);
	rep(i, m) {
		if(st[i+1].size() <= 1) continue;
		int pre = *(st[i+1].begin());
		each(it, st[i+1]) {
			uf.unite(pre, *it);
		}
	}

	int cnt = 0;
	rep(i, n) {
		if(uf.find(0) == uf.find(i)) cnt++;
	}

	if(cnt == n) cout << "YES" << endl;
	else cout << "NO" << endl;

	return 0;
}

Submission Info

Submission Time
Task C - Interpretation
User Ry0u_
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1753 Byte
Status AC
Exec Time 78 ms
Memory 10368 KB

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 200 / 200 200 / 200
Status
AC × 2
AC × 12
AC × 25
Set Name Test Cases
sample sample-01.txt, sample-02.txt
dataset1 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt
dataset2 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt
Case Name Status Exec Time Memory
01-01.txt AC 2 ms 256 KB
01-02.txt AC 2 ms 384 KB
01-03.txt AC 3 ms 384 KB
01-04.txt AC 3 ms 256 KB
01-05.txt AC 3 ms 256 KB
01-06.txt AC 3 ms 384 KB
01-07.txt AC 3 ms 256 KB
01-08.txt AC 3 ms 384 KB
01-09.txt AC 3 ms 256 KB
01-10.txt AC 3 ms 384 KB
02-01.txt AC 49 ms 9600 KB
02-02.txt AC 70 ms 5760 KB
02-03.txt AC 49 ms 7296 KB
02-04.txt AC 61 ms 9984 KB
02-05.txt AC 63 ms 6016 KB
02-06.txt AC 61 ms 9984 KB
02-07.txt AC 64 ms 6144 KB
02-08.txt AC 50 ms 5760 KB
02-09.txt AC 78 ms 10368 KB
02-10.txt AC 54 ms 7680 KB
02-11.txt AC 53 ms 7680 KB
02-12.txt AC 52 ms 7424 KB
02-13.txt AC 52 ms 7424 KB
sample-01.txt AC 2 ms 256 KB
sample-02.txt AC 2 ms 256 KB