Pagini recente » Cod sursa (job #17671) | Cod sursa (job #1265426) | Cod sursa (job #2684721) | Cod sursa (job #1968952) | Cod sursa (job #2023837)
#include <bits/stdc++.h>
#define MaxN 100005
#define INF 2140000000
using namespace std;
FILE *IN,*OUT;
int N,M,X,Y,cnt=0,Size=0;
bool found[MaxN],seen[MaxN];
pair<int,int>Stack[MaxN];
vector<int> Graph[MaxN];
void DFS(int node,int father)
{
found[node]=1;
cnt++;
for(int i=0;i<Graph[node].size();i++)
if(!found[Graph[node][i]])
DFS(Graph[node][i],node);
if(father)Stack[++Size]={node,father};
}
int main()
{
IN=fopen("mesaj4.in","r");
OUT=fopen("mesaj4.out","w");
fscanf(IN,"%d%d",&N,&M);
for(int i=1;i<=M;i++)
{
fscanf(IN,"%d%d",&X,&Y);
Graph[X].push_back(Y);
Graph[Y].push_back(X);
}
DFS(1,0);
if(cnt<N)
{
fprintf(OUT,"-1");
return 0;
}
fprintf(OUT,"%d\n",2*N-2);
for(int i=1;i<=Size;i++)
fprintf(OUT,"%d %d\n",Stack[i].first,Stack[i].second);
for(int i=Size;i>0;i--)
fprintf(OUT,"%d %d\n",Stack[i].second,Stack[i].first);
return 0;
}