Pagini recente » Cod sursa (job #1269685) | Cod sursa (job #1904656) | Cod sursa (job #1289609) | Cod sursa (job #451050) | Cod sursa (job #1644996)
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
FILE * fin = fopen("mesaj4.in","r");
FILE * fout = fopen("mesaj4.out","w");
int f[100005],n,m,a,b;
vector<int> v[100005];
void dfs( int nod ){
f[nod] = 1;
for( int i = 0; i < v[nod].size(); i++ ){
int vecin = v[nod][i];
if( f[vecin] == 0 ){
dfs( vecin );
}
}
}
void dfs1( int nod, int tata ){
f[nod] = 1;
for( int i = 0; i < v[nod].size(); i++ ){
int vecin = v[nod][i];
if( f[vecin] == 0 ){
dfs1( vecin, nod );
}
}
if( tata != 0 ){
fprintf( fout, "%d %d\n", nod, tata );
}
}
void dfs2( int nod ){
f[nod] = 1;
for( int i = 0; i < v[nod].size(); i++ ){
int vecin = v[nod][i];
if( f[vecin] == 0 ){
fprintf( fout, "%d %d\n", nod, vecin );
dfs( vecin );
}
}
}
int main(){
fscanf( fin, "%d%d", &n, &m );
for( int i = 1; i <= m; i++ ){
fscanf( fin, "%d%d", &a, &b );
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
for( int i = 1; i <= n; i++ ){
if( f[i] == 0 ){
fprintf( fout, "-1\n" );
return 0;
}
}
fprintf( fout, "%d\n", 2 * n - 2 );
memset( f, 0, sizeof(f) );
dfs1(1,0);
memset( f, 0, sizeof(f) );
dfs2(1);
return 0;
}