Cod sursa(job #1300089)

Utilizator serban_ioan97Ciofu Serban serban_ioan97 Data 24 decembrie 2014 00:34:22
Problema Mesaj4 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <vector>
#define nmax 10001
#define pb push_back
#define mp make_pair

using namespace std;

vector<int> a[nmax];
vector<pair<int, int> > sol;
bool used[nmax];
int i, j, n, m, x, y;

void dfs(int node)
{
    vector<int>::iterator it;
    used[node]=true;

    for(it=a[node].begin(); it!=a[node].end(); ++it)
    if(!used[*it])
    {
        dfs(*it);
        sol.pb(mp(*it, node));
    }
}
int main ()
{
    freopen("mesaj4.in", "rt", stdin);
    freopen("mesaj4.out", "wt", stdout);

    scanf("%d%d", &n, &m);

    for(i=1; i<=m; ++i)
    {
        scanf("%d%d", &x, &y);
        a[x].pb(y);
        a[y].pb(x);
    }

    dfs(1);

    vector<pair<int, int> >::iterator it;
    vector<pair<int, int> >::reverse_iterator ti;

    int number=2*(n-1);
    printf("%d\n", number);

    for(it=sol.begin(); it!=sol.end(); ++it)
    printf("%d %d\n", it->first, it->second);

    for(ti=sol.rbegin(); ti!=sol.rend(); ++ti)
    printf("%d %d\n", ti->second, ti->first);

    return 0;
}