Cod sursa(job #2024485)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 20 septembrie 2017 18:50:14
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;
vector <int> v[100001];
int f[100001];
pair <int,int> sol[100001];
int etp=0;
void dfs (int x){
    int i,vecin;
    f[x]=1;
    for (i=0;i<v[x].size();i++){
        vecin=v[x][i];
        if (f[vecin]==0){
            dfs(vecin);
            etp++;
            sol[etp].first=vecin;
            sol[etp].second=x;
        }
    }
}
int main()
{
    FILE *fin=fopen ("mesaj4.in","r");
    FILE *fout=fopen ("mesaj4.out","w");
    int n,m,i,x,y;
    fscanf (fin,"%d%d",&n,&m);
    for (i=1;i<=m;i++){
        fscanf (fin,"%d%d",&x,&y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs (1);
    for (i=1;i<=n;i++)
        if (f[i]==0){
            fprintf (fout,"-1");
            return 0;
        }
    fprintf (fout,"%d\n",2*etp);
    for (i=1;i<=etp;i++)
        fprintf (fout,"%d %d\n",sol[i].first,sol[i].second);
    for (i=etp;i>0;i--)
        fprintf (fout,"%d %d\n",sol[i].second,sol[i].first);
    return 0;
}