Pagini recente » Cod sursa (job #2021639) | Cod sursa (job #1588052) | Monitorul de evaluare | Clasament dupa rating | Cod sursa (job #2023259)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
FILE *fin, *fout;
vector < int > G[MAXN];
pair < int, int > answer[2 * MAXN];
int k, m, n, ans, father[MAXN];
bool seen[MAXN];
void DFS( int node ) {
seen[node] = 1;
for(int son: G[node])
if(!seen[son]) {
DFS( son );
answer[ans++] = {son, node};
}
}
bool check() {
for (int i = 1; i <= n; i++)
if(!seen[i])
return 0;
return 1;
}
int main()
{
fin = fopen( "mesaj4.in", "r" );
fout= fopen( "mesaj4.out","w" );
int x, y;
fscanf( fin, "%d%d", &n, &m );
for (int i = 1; i <= m; i++) {
fscanf( fin, "%d%d", &x, &y );
G[x].push_back(y);
G[y].push_back(x);
}
DFS( 1 );
if (check()) {
fprintf( fout, "%d\n", ans*2 );
for (int i = 0; i < ans; i++)
fprintf( fout, "%d %d\n", answer[i].first, answer[i].second );
for (int i = ans-1; i >= 0; i--)
fprintf( fout, "%d %d\n", answer[i].second, answer[i].first );
}
else
fprintf( fout, "-1" );
fclose( fin );
fclose( fout );
return 0;
}