Submission #575877

#TimeUsernameProblemLanguageResultExecution timeMemory
575877eecsNaboj (COCI22_naboj)C++17
110 / 110
799 ms61048 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 200010; int n, m, c0[maxn], c1[maxn]; bool vis[maxn]; set<pair<int, int>> G[maxn]; vector<array<int, 2>> res; int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> n >> m; while (m--) { int u, v; cin >> u >> v; G[u].emplace(v, 1), G[v].emplace(u, 0); c0[u]++, c1[v]++; } queue<int> Q; for (int i = 1; i <= n; i++) { if (!c0[i] || !c1[i]) Q.push(i); } while (!Q.empty()) { int x = Q.front(); Q.pop(); if (vis[x]) continue; res.push_back({x, c0[x] ? 1 : 0}), vis[x] = 1; for (auto &e : G[x]) if (!vis[e.first]) { (e.second ? c1[e.first] : c0[e.first])--; G[e.first].erase({x, !e.second}); if (!c0[e.first] || !c1[e.first]) Q.push(e.first); } } if (count(vis + 1, vis + n + 1, 0)) cout << "-1\n", exit(0); cout << res.size() << "\n"; reverse(res.begin(), res.end()); for (auto &p : res) { cout << p[0] << " " << p[1] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...