제출 #1355605

#제출 시각아이디문제언어결과실행 시간메모리
1355605ChinguunAlkemija (COCI18_alkemija)C++20
80 / 80
26 ms9704 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ff first
#define ss second
#define pb push_back
#define ppb pop_back
#define meta int tm = (tl + tr) / 2, x = i * 2 + 1, y = x + 1

const int SN = 2e5 + 7;
const int TN = 4 * SN;
const int oo = 1e18;
const int mod = 1e9 + 7;

typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vii;

int n, m, a[SN], k, l[SN], r[SN];
vi v[SN], b[SN], ans;
bool vis[SN];
deque<int> dq;

void del (int x) {
	for (auto c : v[x]) {
		l[c]--;
		if (!l[c]) {
			for (auto it : b[c]) {
				if (!vis[it]) dq.push_back(it);
			}
		}
	}
}

signed main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int x;
	cin >> n >> m;
	for (int i = 1; i <= m; i++) {
		cin >> x;
		dq.push_back(x);
	}
	cin >> k;
	for (int i = 1; i <= k; i++) {
		cin >> l[i] >> r[i];
		for (int j = 1; j <= l[i]; j++) {
			cin >> x;
			v[x].pb(i);
		}
		for (int j = 1; j <= r[i]; j++) {
			cin >> x;
			b[i].pb(x);
		}
	}
	while (!dq.empty()) {
		x = dq.front();
		if (!vis[x]) {
			del(x);
			vis[x] = 1;
			ans.pb(x);
		}
		dq.pop_front();
	}
	cout << ans.size() << '\n';
	sort(ans.begin(), ans.end());
	for (auto it : ans) {
		cout << it << ' ';
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...