Pagini recente » Cod sursa (job #1966840) | Borderou de evaluare (job #1567991) | Cod sursa (job #592574) | Cod sursa (job #1099745) | Cod sursa (job #553334)
Cod sursa(job #553334)
#include <algorithm>
#include <stdio.h>
#include <vector>
#define MAX 100010
#define pb push_back
#define mp make_pair
#define f first
#define s second
using namespace std;
int n, m;
int sel[MAX];
vector <int> vctDrum[MAX];
vector <pair <int, int> > vctSol;
inline void dfs(int nod, int tata)
{
if (sel[nod])
return;
sel[nod] = 1;
vctSol.pb(mp(nod, tata));
for (int i = 0; i < vctDrum[nod].size(); i++)
dfs(vctDrum[nod][i], nod);
}
int main()
{
freopen("mesaj4.in", "r", stdin);
freopen("mesaj4.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++)
{
int n1, n2;
scanf("%d %d", &n1, &n2);
vctDrum[n1].pb(n2);
vctDrum[n2].pb(n1);
}
dfs(1, 1);
printf("%d\n", 2 * n - 2);
for (int i = n - 1; i; i--)
printf("%d %d\n", vctSol[i].f, vctSol[i].s);
for (int i = 1; i < n; i++)
printf("%d %d\n", vctSol[i].s, vctSol[i].f);
fclose(stdin);
fclose(stdout);
return 0;
}