Cod sursa(job #2023837)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 19 septembrie 2017 15:57:47
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

#define MaxN 100005
#define INF 2140000000

using namespace std;

FILE *IN,*OUT;

int N,M,X,Y,cnt=0,Size=0;
bool found[MaxN],seen[MaxN];
pair<int,int>Stack[MaxN];
vector<int> Graph[MaxN];
void DFS(int node,int father)
{
    found[node]=1;
    cnt++;
    for(int i=0;i<Graph[node].size();i++)
        if(!found[Graph[node][i]])
            DFS(Graph[node][i],node);
    if(father)Stack[++Size]={node,father};
 }
int main()
{
    IN=fopen("mesaj4.in","r");
    OUT=fopen("mesaj4.out","w");

    fscanf(IN,"%d%d",&N,&M);

    for(int i=1;i<=M;i++)
    {
        fscanf(IN,"%d%d",&X,&Y);
        Graph[X].push_back(Y);
        Graph[Y].push_back(X);
    }
    DFS(1,0);
    if(cnt<N)
    {
        fprintf(OUT,"-1");
        return 0;
    }
    fprintf(OUT,"%d\n",2*N-2);
    for(int i=1;i<=Size;i++)
        fprintf(OUT,"%d %d\n",Stack[i].first,Stack[i].second);
    for(int i=Size;i>0;i--)
        fprintf(OUT,"%d %d\n",Stack[i].second,Stack[i].first);
    return 0;
}