Cod sursa(job #1265919)

Utilizator cojocarugabiReality cojocarugabi Data 17 noiembrie 2014 22:23:43
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
# include <bits/stdc++.h>
# define pb push_back
# define x first
# define y second
using namespace std;
ifstream fi("mesaj4.in");
ofstream fo("mesaj4.out");
typedef struct node
{
    int x;
    node *next;
    node()
    {
        x=0;next=0;
    }
} *nod;
const int nmax = 1e5 + 5;
nod s[nmax];
bitset <nmax> b;
vector < pair < int , int > > v;
void dfs(int lnod)
{
    b[lnod]=1;
    for (nod p=s[lnod];p;p=p->next)
        if (!b[p->x])
        {
             v.pb(make_pair(lnod,p->x));
             dfs(p->x);
        }
}
void add(int x,int y)
{
    nod p=new node;
    p->x=y;
    p->next=s[x];
    s[x]=p;
}
int main(void)
{
    int n,m,x,y;
    fi>>n>>m;
    while (m--) fi>>x>>y,add(x,y),add(y,x);
    dfs(1);
    for (int i=1;i<=n;++i) if (!b[i]) return fo << "-1\n",0;
    fo << (n + n - 2) << '\n';
    for (int i=0,l=v.size()-1;i<l;++i) fo << v[i].x << ' ' << v[i].y << '\n';
    for (int i=v.size()-2;i>=0;--i) fo << v[i].x << ' ' << v[i].y << '\n';
    return 0;
}