Pagini recente » Cod sursa (job #183447) | Cod sursa (job #1378181) | Cod sursa (job #2561572) | Cod sursa (job #214183) | Cod sursa (job #1714921)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <bitset>
using namespace std;
const int maxn = 100005;
pair <int, int> rec[maxn];
vector <int> g[maxn];
bitset <maxn> viz;
char T[20];
int cnt;
int m;
void dfs(int x)
{
viz[x] = 1;
int sz = g[x].size();
for(int i = 0; i < sz; i++)
{
if(!viz[g[x][i]])
{
dfs(g[x][i]);
cnt++;
rec[cnt] = make_pair(x, g[x][i]);
}
}
}
int main()
{
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
int n;
scanf("%d%d", &n, &m);
gets(T);
for(int i = 1; i <= m; i++)
{
gets(T);
int p = strlen(T);
int poz = 0;
int x = 0;
for(poz = 0; T[poz] >= '0' && T[poz] <= '9'; poz++)
x = x * 10 + T[poz] - '0';
poz++;
int y = 0;
for(int j = poz; j < p; j++)
y = y * 10 + T[j] - '0';
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
if(cnt < n - 1)
{
printf("-1\n");
return 0;
}
printf("%d\n", cnt * 2);
for(int i = 1; i <= cnt; i++)
printf("%d %d\n", rec[i].second, rec[i].first);
for(int i = cnt; i >= 1; i--)
printf("%d %d\n", rec[i].first, rec[i].second);
return 0;
}