Cod sursa(job #2440535)

Utilizator CharacterMeCharacter Me CharacterMe Data 18 iulie 2019 17:10:48
Problema Mesaj4 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n, m, i, j, tot;
vector<int> graph[100001];
bool check[100001];
void dfs(int node, int task);
int main()
{
    freopen("mesaj4.in", "r", stdin);
    freopen("mesaj4.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(i=1; i<=m; ++i){
        int x, y;
        scanf("%d%d", &x, &y);
        graph[x].push_back(y);
        graph[y].push_back(x);
    }
    dfs(1, 1);
    if(tot!=n-1) {printf("-1"); return 0;}
    printf("%d\n", 2*n-2);
    for(i=1; i<=n; ++i) check[i]=false;
    dfs(1, 2);
    return 0;
}
void dfs(int node, int task){
    check[node]=true;
    for(auto i:graph[node]) if(check[i]==false){
        if(task==1) ++tot;
        else printf("%d %d\n", node, i);
        dfs(i, task);
        if(task==2) printf("%d %d\n", i, node);
    }
    return;
}