Cod sursa(job #1647905)

Utilizator maribMarilena Bescuca marib Data 10 martie 2016 22:44:32
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#define DMAX 100002
#include <vector>

using namespace std;

int inc, sf, vf, n, m, a, b;

int vis[DMAX], cd[DMAX], cd1[DMAX];

vector <int> edges[DMAX];

void solve(){
    inc = 1; sf = 0;
    cd[++sf] = 1;
    vis[1] = 1;
    while(inc <= sf){
        vf = cd[inc++];
        for(int i = 0; i < edges[vf].size(); ++i){
            if(!vis[edges[vf][i]]){
                cd[++sf] = edges[vf][i];
                cd1[sf] = vf;
                vis[cd[sf]] = 1;
            }
        }
    }
}

int main()
{
    ifstream in("mesaj4.in");
    ofstream out("mesaj4.out");
    in>>n>>m;
    for(int i = 1; i <= m; ++i){
        in>>a>>b;
        edges[a].push_back(b);
        edges[b].push_back(a);
    }
    solve();
    if(sf != n){
        out<<"-1\n";
    }
    else {
        out<<2 * (n - 1)<<"\n";
        for(int i = n; i > 1; --i){
            out<<cd[i]<<" "<<cd1[i]<<"\n";
        }
        for(int i = 2; i <= n; ++i){
            out<<cd1[i]<<" "<<cd[i]<<"\n";
        }
    }
    in.close();
    out.close();
    return 0;
}