# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
852269 | 2023-09-21T14:06:29 Z | Trisanu_Das | Naboj (COCI22_naboj) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; int main(){ int n, m; cin >> n >> m; int deg[n + 1], u, v; memset(deg, 0, sizeof(deg)); vector<int> adj[n + 1]; while(m--){ cin >> v >> u; adj[u].push_back(u); deg[u]++; } vector<int> toposort; queue<int> q; for(int i = 1; i < n + 1; i++) if(deg[i] == 0) q.push(i); while(!q.empty()){ int u = q.front(); q.pop(); toposort.push_back(u); for(int v : adj[u]){ deg[v]--; if(deg[v] == 0) q.push_back(v); } } if(toposort.size() != n) cout << -1 << '\n'; else{ cout << n << '\n'; for(auto u : toposort) cout << u << ' ' << 0 << '\n'; } }