Pagini recente » Cod sursa (job #1652437) | Cod sursa (job #3156806) | Cod sursa (job #332151) | Cod sursa (job #633365) | Cod sursa (job #2798123)
// Mihai Priboi
#include <stdio.h>
#include <vector>
using namespace std;
FILE *fin, *fout;
#define MAXN 100000
vector<int> muchii[MAXN + 1];
bool noduri[MAXN + 1];
pair<int, int> drum[MAXN + 1];
int ind;
void dfs( int nod ) {
int i;
noduri[nod] = true;
for( i = 0; i < muchii[nod].size(); i++ ) {
if( !noduri[muchii[nod][i]] ) {
drum[ind].first = muchii[nod][i];
drum[ind++].second = nod;
dfs( muchii[nod][i] );
}
}
}
int main() {
int n, m, i, x, y, cnx;
fin = fopen( "mesaj4.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &x, &y );
muchii[x].push_back(y);
muchii[y].push_back(x);
}
fclose( fin );
dfs(1); // facem dfs pe un punct random ( 1 in cazul de fata :) )
cnx = 1;
for( i = 1; i <= n; i++ ) {
if( !noduri[i] )
cnx = 0;
noduri[i] = 0;
}
fout = fopen( "mesaj4.out", "w" );
if( cnx == 0 )
fprintf( fout, "-1" );
else {
fprintf( fout, "%d\n", 2 * (n - 1) );
for( i = ind - 1; i >= 0; i-- )
fprintf( fout, "%d %d\n", drum[i].first, drum[i].second );
for( i = 0; i < ind; i++ )
fprintf( fout, "%d %d\n", drum[i].second, drum[i].first );
}
fclose( fout );
return 0;
}