Pagini recente » Cod sursa (job #3271985) | Cod sursa (job #2765023) | Cod sursa (job #650463) | Cod sursa (job #2511701) | Cod sursa (job #3196270)
#include <fstream>
#include <vector>
#include <algorithm>
#define DIM 100010
using namespace std;
ifstream fin ("mesaj4.in");
ofstream fout("mesaj4.out");
bool viz[DIM];
int niv[DIM], tata[DIM], node[DIM];
vector<int> L[DIM];
vector<int> F[DIM];
int vf, n, m, x, y, crt;
void dfs(int nod, int nivel){
viz[nod]=true;
niv[nod]=nivel;
vf++;
for (auto vec:L[nod]){
if (!viz[vec]){
F[nod].push_back(vec);
tata[vec]=nod;
dfs(vec, nivel+1);
}
}
}
bool cmp(int x, int y){
return niv[x]<niv[y];
}
void dfsAfis(int nod){
if (tata[nod]!=0){
fout<<tata[nod]<<" "<<nod<<"\n";
}
for (auto fiu:F[nod]){
dfsAfis(fiu);
}
}
int main (){
fin>>n>>m;
for (int i=1;i<=m;i++){
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1, 0);
if (vf!=n){
fout<<-1;
return 0;
}
for (int i=1;i<=n;i++){
node[i]=i;
}
sort(node+1, node+n+1, cmp);
fout<<(n-1)*2<<"\n";
for (int i=n;i>1;i--){
crt=node[i];
fout<<crt<<" "<<tata[crt]<<"\n";
}
dfsAfis(1);
return 0;
}