Cod sursa(job #779489)

Utilizator visanrVisan Radu visanr Data 17 august 2012 20:13:51
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;

#define pb push_back
#define mp make_pair
#define nmax 100010

vector<int> G[nmax];
int N, M, X, Y, used[nmax];
vector<pair<int, int> > sol;

void DFS(int node)
{
     used[node] = 1;
     for(vector<int> :: iterator it = G[node].begin(); it != G[node].end(); ++it)
                     if(!used[*it])
                                   sol.pb(mp(node, *it)), DFS(*it);
}

int main()
{
    freopen("mesaj4.in", "r", stdin);
    freopen("mesaj4.out", "w", stdout);
    int i;
    scanf("%i %i", &N, &M);
    for(; M; M --)
    {
          scanf("%i %i", &X, &Y);
          G[X].pb(Y);
          G[Y].pb(X);
    }
    DFS(1);
    for(i = 1; i <= N; i++) 
          if(!used[i])
          {
                      printf("-1\n");
                      return 0;
          }
    printf("%i\n", 2 * (N - 1));
    for(i = sol.size() - 1; i >= 0; i--) printf("%i %i\n", sol[i].second, sol[i].first);
    for(i = 0; i < sol.size(); i++) printf("%i %i\n", sol[i].first, sol[i].second);
    return 0;
}