Pagini recente » Cod sursa (job #542316) | Cod sursa (job #1879043) | Cod sursa (job #7657) | Cod sursa (job #2170253) | Cod sursa (job #633226)
Cod sursa(job #633226)
#include<fstream>
#include<vector>
#define maxn 100005
#define pb push_back
using namespace std;
ifstream f("mesaj4.in");
ofstream g("mesaj4.out");
int n,m,i,x,y,k,p,u,nod,nodvcn;
int C[maxn],viz[maxn],moves1[maxn],moves2[maxn];
vector<int>G[maxn];
inline void Bfs () {
p = u = 1; C[1] = 1; viz[1] = 1;
while ( p <= u ){
nod = C[p];
for ( int i = 0 ; i < G[nod].size() ; ++i ){
nodvcn = G[nod][i];
if ( !viz[nodvcn] ){
viz[nodvcn] = 1;
C[++u] = nodvcn;
++k; moves1[k] = nodvcn; moves2[k] = nod;
}
}
++p;
}
}
inline void solutie () {
for ( i = 1 ; i <= n ; ++i ){
if ( !viz[i] ){
g << "-1" << "\n";
return ;
}
}
g << (k<<1) << "\n";
for ( i = k ; i >= 1 ; --i ){
g << moves1[i] << " " << moves2[i] << "\n";
}
for ( i = 1 ; i <= k ; ++i ){
g << moves2[i] << " " << moves1[i] << "\n";
}
}
int main () {
f >> n >> m;
for ( i = 1 ; i <= m ; ++i ){
f >> x >> y;
G[x].pb(y); G[y].pb(x);
}
Bfs();
solutie();
f.close();
g.close();
return 0;
}