Cod sursa(job #2808552)

Utilizator mihnea.cazan15mihnea cazan mihnea.cazan15 Data 25 noiembrie 2021 11:47:55
Problema Mesaj4 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;
vector<int> v[100005];
vector<pair<int,int> > ans;
bool viz1[100005],viz2[100005];
int n,m;
void dfs1(int nod,int tata)
{
    viz1[nod]=true;
    for(auto fiu:v[nod])
    {
        if(!viz1[fiu])
           dfs1(fiu,nod);
    }
    if(tata)
       ans.emplace_back(nod,tata);
}
void dfs2(int nod)
{
    viz2[nod]=1;
    for(auto fiu:v[nod])
    {
        if(!viz2[fiu])
        {
            ans.emplace_back(nod,fiu);
            dfs2(fiu);
        }
    }
}
int main()
{
    ifstream cin("mesaj4.in");
    ofstream cout("mesaj4.out");
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs1(1,0);
    for(int i=1;i<=n;i++)
    {
        if(!viz1[i])
        {
            cout<<"-1";
            return 0;
        }
    }
    dfs2(1);
    cout<<ans.size()<<"\n";
    for(auto nod:ans)
        cout<<nod.first<<" "<<nod.second<<"\n";
    return 0;
}