Cod sursa(job #2255044)

Utilizator bogdi1bogdan bancuta bogdi1 Data 6 octombrie 2018 12:51:08
Problema Mesaj4 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <vector>
using namespace std;
vector<int> g[100005];
bool viz[100005];
struct Solutie
{
    int x,y;
} sol[400005];
int n,k;
int dfs(int nod)
{
    viz[nod]=1;
    for(int i=0; i<g[nod].size(); i++)
            if(viz[g[nod][i]]==0){
                dfs(g[nod][i]);
                sol[++k].y=nod;
                sol[k].x=g[nod][i];
            }
}
int main()
{   freopen("mesaj4.in", "r",stdin);
    freopen("mesaj4.out", "w",stdout);
    int m,i,x,y;
    scanf("%d%d", &n, &m);
    for(i=1; i<=m; i++){
        scanf("%d%d", &x, &y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    dfs(1);
    for(i=1; i<=n; i++)
        if(viz[i]==0){
            printf("-1");
            return 0;
        }
    printf("%d\n", 2*k);
    for(i=1; i<=k; i++)
        printf("%d %d\n", sol[i].x, sol[i].y);
    for(i=k; i>=1; i--)
        printf("%d %d\n", sol[i].y, sol[i].x);
    return 0;
}