Pagini recente » Cod sursa (job #2776913) | Cod sursa (job #160516) | Cod sursa (job #1859854) | Cod sursa (job #842813) | Cod sursa (job #1427774)
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream f("mesaj4.in");
ofstream g("mesaj4.out");
int const NMax = 100005;
vector <int> G[NMax];
int use[NMax];
pair <int, int> sol[NMax];
int n, m, k=1;
void citire()
{
int i, x, y;
f>>n>>m;
for(i=1; i<=m; i++){
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
void DFSF(int nod, int father)
{
use[nod] = 1;
int vecin, i;
for(i=0; i<G[nod].size(); i++){
vecin = G[nod][i];
if(!use[vecin])
DFSF(vecin, nod);
}
if(father){
sol[k].first = nod;
sol[k++].second = father;
}
}
void DFSN(int nod)
{
use[nod] = 1;
int vecin, i;
for(i=0; i<G[nod].size(); i++){
vecin = G[nod][i];
if(!use[vecin]){
g<<nod<<" "<<vecin<<"\n";
DFSN(vecin);
}
}
}
int main()
{
int ok = 1;
citire();
DFSF(1, 0);
for(int i=1; i<=n; i++)
if(use[i]==0)
ok=0;
if(!ok){
g<<-1<<"\n";
return 0;
}
g<<2*n - 2<<"\n";
for(int i=1; i<n; i++){
g<<sol[i].first<<" "<<sol[i].second<<"\n";
use[i] = 0;
}
use[n] = 0;
DFSN(1);
return 0;
}