Cod sursa(job #621040)

Utilizator vendettaSalajan Razvan vendetta Data 16 octombrie 2011 17:59:18
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <vector>
#define nmax 100001

using namespace std;

int n, m, viz[nmax],n_sol;
vector<int> gf[nmax];
typedef vector<int> ::iterator it;
pair<int,int> v[nmax];

ifstream f ("mesaj4.in");
ofstream g ("mesaj4.out");

void citeste(){

    f>>n>>m;
    for(int i=1; i<=m; ++i){
        int x, y;
        f>>x>>y;
        gf[x].push_back(y);
        gf[y].push_back(x);
    }

}

void dfs(int nod){

    viz[nod] = 1;
    //for(it i = gf[nod].begin(); i != gf[nod].end(); ++i){
    for(unsigned i = 0; i<gf[nod].size(); ++i){
        if (viz[gf[nod][i]]==0){
            ++n_sol;
            v[n_sol] = make_pair(nod,gf[nod][i]);
            dfs(gf[nod][i]);
        }
    }

}

void scrie(){

    g<<2*(n-1)<<"\n";
    for(int i=n_sol; i>0; --i) g<<v[i].second<<" "<<v[i].first<<"\n";
    for(int i=1; i<=n_sol; ++i) g<<v[i].first<<" "<<v[i].second<<"\n";

}

int main(){

    citeste();
    dfs(1);

    for(int i=1; i<=n; ++i){
        if (viz[i]==0){
            g<<"-1";
            return 0;
        }
    }

    scrie();

    f.close();
    g.close();

    return 0;
}