Cod sursa(job #1246892)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 21 octombrie 2014 19:36:00
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
#define NMax 100005
using namespace std;
ifstream fin("mesaj4.in");
ofstream fout("mesaj4.out");
int N,M,TT[NMax],Use[NMax],Ok;
vector <int> G[NMax];
vector < pair <int, int> > Sol;
void Read()
{
    fin>>N>>M;
    for(int i=1;i<=M;i++)
    {
        int x,y;
        fin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

void DFS(int node)
{
    Use[node]=1;
    for(unsigned int i=0;i<G[node].size();i++)
    {
        int vecin=G[node][i];
        if(!Use[vecin])
        {
         Sol.push_back(make_pair(node, vecin));
            DFS(vecin);
        }
    }
}


void Solve()
{
    DFS(1);
    Ok=1;
    for(int i=1;i<=N;i++)
        if(!Use[i])
            Ok=0;
}

void Print()
{
    if(!Ok)
       {
        fout<<"-1\n";
        return;
       }

    fout<<2*(N-1)<<"\n";

   for(int i=Sol.size()-1;i>=0;i--)
        fout<<Sol[i].second<<" "<<Sol[i].first<<"\n";

   for(unsigned int i=0;i<Sol.size();i++)
        fout<<Sol[i].first<<" "<<Sol[i].second<<"\n";



}

int main()
{
    Read();
    Solve();
    Print();
    return 0;
}