Pagini recente » Cod sursa (job #2030995) | Cod sursa (job #2576570) | Cod sursa (job #1663176) | Cod sursa (job #1476983) | Cod sursa (job #1246892)
#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];
vector < pair <int, int> > Sol;
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])
{
Sol.push_back(make_pair(node, vecin));
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=Sol.size()-1;i>=0;i--)
fout<<Sol[i].second<<" "<<Sol[i].first<<"\n";
for(unsigned int i=0;i<Sol.size();i++)
fout<<Sol[i].first<<" "<<Sol[i].second<<"\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}