Pagini recente » Cod sursa (job #1961324) | Cod sursa (job #1701532) | Cod sursa (job #1667545) | Cod sursa (job #2044906) | Cod sursa (job #2634166)
#include <fstream>
#include <vector>
#include <cctype>
using namespace std;
ifstream fin( "mesaj4.in" );
ofstream fout( "mesaj4.out" );
const int MaxN = 100000;
int read() {
int num = 0, ch;
ch = fin.get();
while ( isspace( ch ) ) {
ch = fin.get();
}
do {
num = num * 10 + ch - '0';
ch = fin.get();
} while ( isdigit( ch ) );
return num;
}
vector<int> adj[MaxN + 1];
int viz[MaxN + 1];
int solx[MaxN + 1];
int soly[MaxN + 1];
int nsol;
void DFS( int node ) {
int i;
viz[node] = 1;
for ( i = 0; i < adj[node].size(); ++i ) {
if ( !viz[adj[node][i]] ) {
solx[nsol] = node;
soly[nsol++] = adj[node][i];
DFS( adj[node][i] );
}
}
}
int main() {
int n, m, i, x, y;
fin >> n >> m;
for ( i = 0; i < m; ++i ) {
x = read();
y = read();
adj[x].push_back( y );
adj[y].push_back( x );
}
DFS( 1 );
if ( nsol == n - 1 ) {
fout << 2 * nsol << "\n";
for ( i = nsol - 1; i >= 0; --i ) {
fout << soly[i] << " " << solx[i] << "\n";
}
for ( i = 0; i < nsol; ++i ) {
fout << solx[i] << " " << soly[i] << "\n";
}
} else {
fout << "-1";
}
fin.close();
fout.close();
return 0;
}