Pagini recente » Borderou de evaluare (job #2466875) | Borderou de evaluare (job #1292360) | Borderou de evaluare (job #2619193) | Borderou de evaluare (job #2370057) | Cod sursa (job #1647905)
#include <fstream>
#define DMAX 100002
#include <vector>
using namespace std;
int inc, sf, vf, n, m, a, b;
int vis[DMAX], cd[DMAX], cd1[DMAX];
vector <int> edges[DMAX];
void solve(){
inc = 1; sf = 0;
cd[++sf] = 1;
vis[1] = 1;
while(inc <= sf){
vf = cd[inc++];
for(int i = 0; i < edges[vf].size(); ++i){
if(!vis[edges[vf][i]]){
cd[++sf] = edges[vf][i];
cd1[sf] = vf;
vis[cd[sf]] = 1;
}
}
}
}
int main()
{
ifstream in("mesaj4.in");
ofstream out("mesaj4.out");
in>>n>>m;
for(int i = 1; i <= m; ++i){
in>>a>>b;
edges[a].push_back(b);
edges[b].push_back(a);
}
solve();
if(sf != n){
out<<"-1\n";
}
else {
out<<2 * (n - 1)<<"\n";
for(int i = n; i > 1; --i){
out<<cd[i]<<" "<<cd1[i]<<"\n";
}
for(int i = 2; i <= n; ++i){
out<<cd1[i]<<" "<<cd[i]<<"\n";
}
}
in.close();
out.close();
return 0;
}