Pagini recente » Cod sursa (job #593374) | Cod sursa (job #2865883) | Cod sursa (job #83768) | Cod sursa (job #10995) | Cod sursa (job #1300096)
#include <cstdio>
#include <vector>
#define nmax 100001
#define pb push_back
#define mp make_pair
using namespace std;
vector<int> a[nmax];
vector<pair<int, int> > sol;
bool used[nmax];
int i, j, n, m, x, y;
void dfs(int node)
{
vector<int>::iterator it;
used[node]=true;
for(it=a[node].begin(); it!=a[node].end(); ++it)
if(!used[*it])
{
dfs(*it);
sol.pb(mp(*it, node));
}
}
int main ()
{
freopen("mesaj4.in", "rt", stdin);
freopen("mesaj4.out", "wt", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=m; ++i)
{
scanf("%d%d", &x, &y);
a[x].pb(y);
a[y].pb(x);
}
dfs(1);
vector<pair<int, int> >::iterator it;
vector<pair<int, int> >::reverse_iterator ti;
if(sol.size()!=n-1)
{
printf("-1");
return 0;
}
long long number=2*(n-1);
printf("%lld\n", number);
for(it=sol.begin(); it!=sol.end(); ++it)
printf("%d %d\n", it->first, it->second);
for(ti=sol.rbegin(); ti!=sol.rend(); ++ti)
printf("%d %d\n", ti->second, ti->first);
return 0;
}