Submission #1297159

#TimeUsernameProblemLanguageResultExecution timeMemory
1297159tabNaboj (COCI22_naboj)C++20
0 / 110
54 ms11028 KiB
#include "bits/stdc++.h"
using namespace std;
#define intt long long
#define fi first
#define se second

const intt mxN = 1e5 + 5;
const intt LG = 20;
const intt inf = 1e18;  

intt n,c;
vector<vector<intt>> graph;
vector<intt> color(mxN);

void dfs(intt node) {
    color[node] = 1;
    for(auto u : graph[node]) {
        if(color[u] == 0) {
            dfs(u);
        } else if(color[u] == 1) {
            c=1;
            return;
        }
    }
    color[node] = 2;
}

vector<intt> boo;
void dfs2(intt node) {
    color[node]=1;
    for(auto u : graph[node]) {
        if(!color[u]) {
            dfs2(u);
        }
    }
    boo.push_back(node);
}

void _() {
    cin >> n;
    graph.assign(n + 1, vector<intt> {});
    color.assign(n + 1, 0ll);
    for(intt i = 1; i <= n - 1; i++) {
        intt a, b;
        cin >> a >> b;
        graph[a].push_back(b);
    }
    for(intt i = 1; i <= n; i++) {
        if(!color[i]) {
            dfs(i);
            if(c)break;
        }
    }
    if(c) {
        cout << -1 << endl;
        return;
    }
    color.assign(n + 1, 0ll);
    for(intt i = 1; i <= n; i++) {
        if(!color[i]) {
            dfs2(i);
        }
    }
    cout << boo.size() << endl;
    for(intt i = 0; i < boo.size(); i++) {
        cout << boo[i] << " 0" << endl;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    intt t = 1, buu = 1;
    // cin >> t;
    while(t--){
        // cout << "Case #" << buu++ << ": ";
        _();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...