Cod sursa(job #1202084)

Utilizator diana97Diana Ghinea diana97 Data 26 iunie 2014 20:28:48
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 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) {
    //cout << 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 + 1 != n) g << -1 << '\n';
    else {
        g << 2 * n - 2 << '\n';
        for (int i = n - 2; i >= 0; i--) g << sol[i].second << ' ' << sol[i].first << '\n';
        for (int i = 0; i < n - 1; i++) g << sol[i].first << ' ' << sol[i].second << '\n';
    }
}

int main () {
    citeste ();
    viz[1] = 1;
    DFS (1);
    scrie ();
}