Submission #142625

# Submission time Handle Problem Language Result Execution time Memory
142625 2019-08-10T05:36:39 Z KCSC Alkemija (COCI18_alkemija) C++14
80 / 80
197 ms 10980 KB
#include <bits/stdc++.h>
using namespace std;

const int DIM = 100005;

deque<int> que;
vector<int> lef[DIM], rig[DIM];

bool oki[DIM];
int cnt[DIM], tot[DIM];

int main(void) {
#ifdef HOME
	freopen("alkemija.in", "r", stdin);
	freopen("alkemija.out", "w", stdout);
#endif
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= m; ++i) {
		int x;
		cin >> x;
		oki[x] = true;
	}
	int k;
	cin >> k;
	for (int i = 1; i <= k; ++i) {
		int l, r;
		cin >> l >> r;
		tot[i] = l;
		for (int j = 1; j <= l; ++j) {
			int x;
			cin >> x;
			lef[x].push_back(i);
			if (oki[x] and ++cnt[i] == tot[i]) 
				que.push_back(i);
		}
		for (int j = 1; j <= r; ++j) {
			int x;
			cin >> x;
			rig[i].push_back(x);
		}
	}
	for (; que.size(); que.pop_front()) {
		int x = que.front();
		for (int y : rig[x]) {
			if (oki[y])
				continue;
			oki[y] = true;
			for (int z : lef[y]) 
				if (++cnt[z] == tot[z])
					que.push_back(z);
		}
	}
	int nr = 0;
	for (int i = 1; i <= n; ++i)
		nr += oki[i];
	cout << nr << endl;
	for (int i = 1; i <= n; ++i)
		if (oki[i])
			cout << i << " ";
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 5112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 5112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 4984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 53 ms 6548 KB Output is correct
2 Correct 73 ms 7288 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 133 ms 8848 KB Output is correct
2 Correct 145 ms 9336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 179 ms 10360 KB Output is correct
2 Correct 158 ms 9560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 197 ms 10980 KB Output is correct
2 Correct 179 ms 10364 KB Output is correct