Cod sursa(job #2022148)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 15 septembrie 2017 20:03:39
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

const int MAXN = (int) 1e5;

std::vector <int> g[MAXN + 1];

std::vector < std::pair <int, int> > prs;

bool viz[MAXN + 1];

void dfs(int nod) {
    viz[nod] = 1;
    for(auto it : g[nod])
       if(!viz[it]) {
            prs.push_back({nod, it});
            dfs(it);
       }
}

int main() {
    FILE *fi, *fout;
    int i, n, m, x, y;
    fi = fopen("mesaj4.in" ,"r");
    fout = fopen("mesaj4.out" ,"w");
    fscanf(fi,"%d %d " ,&n,&m);
    for(i = 1; i <= m; i++) {
        fscanf(fi,"%d %d " ,&x,&y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    dfs(1);
    if(prs.size() != n - 1)
        fprintf(fout,"-1");
    else {
        fprintf(fout,"%d\n" ,2 * (n - 1));
        for(auto it : prs)
            fprintf(fout,"%d %d\n" ,it.first,it.second);
        for(i = prs.size() - 1; i >= 0; i--)
            fprintf(fout,"%d %d\n" ,prs[i].second,prs[i].first);
    }
    fclose(fi);
    fclose(fout);
    return 0;
}