Submission #142625

#TimeUsernameProblemLanguageResultExecution timeMemory
142625KCSCAlkemija (COCI18_alkemija)C++14
80 / 80
197 ms10980 KiB
#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 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...