Cod sursa(job #1202083)

Utilizator diana97Diana Ghinea diana97 Data 26 iunie 2014 20:25:39
Problema Mesaj4 Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f ("mesaj4.in");
ofstream g ("mesaj4.out");

int n, m;
vector <int> v[100001];
vector < pair <int, int> > sol;
char viz[100001];

void citeste () {
    f >> n >> m;
    int a, b;
    for (int i = 1; i <= m; i++) {
        f >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

void DFS (int x) {
    int l = v[x].size ();
    for (int i = 0; i < l; i++) {
        if (viz[v[x][i]] == 0) {
            sol.push_back(make_pair(x, v[x][i]));
            viz[v[x][i]] = 1;
            DFS(v[x][i]);
        }
    }
}

void scrie () {
    int l = sol.size ();
    if (l != n) g << -1 << '\n';
    else {
        g << 2 * l - 2 << '\n';
        for (int i = l - 2; i >= 0; i--) g << sol[i].second << ' ' << sol[i].first << '\n';
        for (int i = 0; i < l - 1; i++) g << sol[i].first << ' ' << sol[i].second << '\n';
    }
}

int main () {
    citeste ();
    DFS (1);
    scrie ();
}