Cod sursa(job #2253546)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 4 octombrie 2018 09:37:42
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda shimulare_fara_shim Marime 0.89 kb
#include <cstdio>
#include <vector>

using namespace std;

const int MAX_N = 100000;

struct Structuras {
  int x;
  int y;
};

vector<int> g[1 + MAX_N];
bool viz[1 + MAX_N];
Structuras sol[1 + 4 * MAX_N];

int k;
void dfs(int vertex) {
  viz[vertex] = true;
  for (auto u : g[vertex]) {
    if (!viz[u]) {
      dfs(u);
      sol[++k] = {u, vertex};
    }
  }
}

int main() {
  freopen("mesaj4.in", "r", stdin);
  freopen("mesaj4.out", "w", stdout);
  
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    g[x].push_back(y);
    g[y].push_back(x);
  }
  dfs(1);
  for (int i = 2; i <= n; i++) {
    if (!viz[i]) {
      printf("-1\n");
      return 0;
    }
  }
  printf("%d\n", 2 * k);
  for (int i = 1; i <= k; i++)
    printf("%d %d\n", sol[i].x, sol[i].y);
  for (int i = k; i >= 1; i--)
    printf("%d %d\n", sol[i].y, sol[i].x);
  return 0;
}