Cod sursa(job #2005809)

Utilizator akaprosAna Kapros akapros Data 28 iulie 2017 11:52:33
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#define maxN 100002
using namespace std;

FILE *fin = freopen("mesaj4.in", "r", stdin);
FILE *fout = freopen("mesaj4.out", "w", stdout);

/* ---------------------------------- */
int n, m;
vector < int > V[maxN];
/* ---------------------------------- */
bool vis[maxN];
/* ---------------------------------- */
int T;
struct Edge
{
    int x, y;
} ans[maxN];

void dfs(int nod)
{
    vis[nod] = 1;
    for (int son : V[nod])
        if (!vis[son])
        {
            dfs(son);
            ans[++ T] = {son, nod};
        }
}

int main()
{
    scanf("%d\n%d", &n, &m);
    for (int i = 1; i <= m; ++ i)
    {
        int x, y;
        scanf("%d %d", &x, &y);
        V[x].push_back(y);
        V[y].push_back(x);
    }
    dfs(1);
    if (T != n - 1)
        printf("-1\n");
    else
    {
        printf("%d\n", 2 * T);
        for (int i = 1; i <= T; ++ i)
            printf("%d %d\n", ans[i].x, ans[i].y);

        for (int i = T; i >= 1; -- i)
            printf("%d %d\n", ans[i].y, ans[i].x);
    }
    return 0;
}