Cod sursa(job #1246890)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 21 octombrie 2014 19:27:26
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 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];

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])
        {
            TT[vecin]=node;
            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=N;i>=2;i--)
       fout<<i<<" "<<TT[i]<<"\n";

    for(int i=2;i<=N;i++)
        fout<<TT[i]<<" "<<i<<"\n";

}

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