Cod sursa(job #513994)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 17 decembrie 2010 15:39:24
Problema Mesaj4 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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();

    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]);
    fclose(stdin); fclose(stdout);
    return 0;
}