Pagini recente » Cod sursa (job #1195739) | Cod sursa (job #556180) | Cod sursa (job #1622534) | Cod sursa (job #521360) | Cod sursa (job #779489)
Cod sursa(job #779489)
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;
#define pb push_back
#define mp make_pair
#define nmax 100010
vector<int> G[nmax];
int N, M, X, Y, used[nmax];
vector<pair<int, int> > sol;
void DFS(int node)
{
used[node] = 1;
for(vector<int> :: iterator it = G[node].begin(); it != G[node].end(); ++it)
if(!used[*it])
sol.pb(mp(node, *it)), DFS(*it);
}
int main()
{
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
int i;
scanf("%i %i", &N, &M);
for(; M; M --)
{
scanf("%i %i", &X, &Y);
G[X].pb(Y);
G[Y].pb(X);
}
DFS(1);
for(i = 1; i <= N; i++)
if(!used[i])
{
printf("-1\n");
return 0;
}
printf("%i\n", 2 * (N - 1));
for(i = sol.size() - 1; i >= 0; i--) printf("%i %i\n", sol[i].second, sol[i].first);
for(i = 0; i < sol.size(); i++) printf("%i %i\n", sol[i].first, sol[i].second);
return 0;
}