Pagini recente » Cod sursa (job #209990) | Cod sursa (job #89914) | Cod sursa (job #1304619) | Cod sursa (job #1794791) | Cod sursa (job #2440540)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n, m, i, j, v;
vector<int> graph[100001];
pair<int, int> sol[200002];
bool check[100001];
void dfs(int node);
int main()
{
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=m; ++i){
int x, y;
scanf("%d%d", &x, &y);
graph[x].push_back(y);
graph[y].push_back(x);
}
dfs(1);
for(i=1; i<=n; ++i) if(i==false) {printf("-1"); return 0;}
printf("%d\n", 2*n-2);
for(i=1; i<=v; ++i) printf("%d %d\n", sol[i].first, sol[i].second);
for(i=v; i>=1; --i) printf("%d %d\n", sol[i].second, sol[i].first);
return 0;
}
void dfs(int node){
check[node]=true;
for(auto i:graph[node]) if(check[i]==false){
dfs(i);
sol[++v]={i, node};
}
return;
}