Pagini recente » Cod sursa (job #2718166) | Cod sursa (job #3263195) | Cod sursa (job #559878) | Cod sursa (job #2421019) | Cod sursa (job #633222)
Cod sursa(job #633222)
#include<stdio.h>
#include<vector>
#define maxn 100005
#define pb push_back
using namespace std;
FILE*f=fopen("mesaj4.in","r");
FILE*g=fopen("mesaj4.out","w");
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] ){
fprintf(g,"%d\n",-1);
return ;
}
}
fprintf(g,"%d\n",k<<1);
for ( i = k ; i >= 1 ; --i ){
fprintf(g,"%d %d\n",moves1[i],moves2[i]);
}
for ( i = 1 ; i <= k ; ++i ){
fprintf(g,"%d %d\n",moves2[i],moves1[i]);
}
}
int main () {
fscanf(f,"%d %d",&n,&m);
for ( i = 1 ; i <= m ; ++i ){
fscanf(f,"%d %d",&x,&y);
G[x].pb(y); G[y].pb(x);
}
Bfs();
solutie();
fclose(f);
fclose(g);
return 0;
}