Cod sursa(job #513996)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 17 decembrie 2010 15:42:33
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#include <vector>
#include <queue>
#define Nmax 100002
#define pb push_back

using namespace std;

vector< int > v[Nmax];
queue< int > Q;
int use[Nmax],X[Nmax],Y[Nmax];
int N,M,nr;

void solve(){
    vector< int >:: iterator it;
    int x;
    Q.push(1); use[1]=1;
    while( ! Q.empty() ){
        x=Q.front(); Q.pop();
        for(it=v[x].begin(); it!=v[x].end(); ++it)
            if(!use[*it]){
                 X[++nr]=*it; Y[nr]=x;
                 use[*it]=use[x]+1;
                 Q.push(*it);
            }
    }
}


int main(){
    int i,x,y;
    freopen("mesaj4.in","r",stdin);
    freopen("mesaj4.out","w",stdout);
    scanf("%d%d",&N,&M);
    for(i=1;i<=M;++i){
        scanf("%d%d",&x,&y);
        v[x].pb(y);
        v[y].pb(x);
    }

    solve();

    for(i=1;i<=N;++i)
        if(!use[i]) break;
    if( i>N ){
        printf("%d\n",nr*2);
        for(i=nr;i>=1;--i) printf("%d %d\n",X[i],Y[i]);
        for(i=1;i<=nr;++i) printf("%d %d\n",Y[i],X[i]);
    }
    else printf("%d\n",-1);
    fclose(stdin); fclose(stdout);
    return 0;
}