Submission #50082

#TimeUsernameProblemLanguageResultExecution timeMemory
50082JustInCaseAlkemija (COCI18_alkemija)C++17
80 / 80
83 ms9500 KiB
#include <bits/stdc++.h> #define endl '\n' using namespace std; const int32_t MAX_N = 1e5; const int32_t MAX_K = 1e5; bool have[MAX_N + 5]; int32_t cnt[MAX_K + 5]; vector< int32_t > operationsWith[MAX_N + 5], operations[MAX_K + 5]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int32_t n, m; cin >> n >> m; for(int32_t i = 0; i < m; i++) { int32_t x; cin >> x; have[x] = true; } int32_t k; cin >> k; queue< int32_t > ready; for(int32_t i = 0; i < k; i++) { int32_t l, r; cin >> l >> r; for(int32_t j = 0; j < l; j++) { int32_t x; cin >> x; operationsWith[x].push_back(i); if(!have[x]) { cnt[i]++; } } for(int32_t j = 0; j < r; j++) { int32_t x; cin >> x; operations[i].push_back(x); } if(cnt[i] == 0) { ready.push(i); } } while(!ready.empty()) { int32_t curr = ready.front(); ready.pop(); for(auto &i : operations[curr]) { if(!have[i]) { for(auto &j : operationsWith[i]) { cnt[j]--; if(cnt[j] == 0) { ready.push(j); } } have[i] = true; } } } int32_t ans = 0; for(int32_t i = 1; i <= n; i++) { if(have[i]) { ans++; } } cout << ans << endl; for(int32_t i = 1; i <= n; i++) { if(have[i]) { cout << i << " "; } } cout << endl; }
#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...