Pagini recente » Cod sursa (job #486074) | Cod sursa (job #2185076) | Cod sursa (job #2969398) | Cod sursa (job #2047568) | Cod sursa (job #621040)
Cod sursa(job #621040)
#include <fstream>
#include <vector>
#define nmax 100001
using namespace std;
int n, m, viz[nmax],n_sol;
vector<int> gf[nmax];
typedef vector<int> ::iterator it;
pair<int,int> v[nmax];
ifstream f ("mesaj4.in");
ofstream g ("mesaj4.out");
void citeste(){
f>>n>>m;
for(int i=1; i<=m; ++i){
int x, y;
f>>x>>y;
gf[x].push_back(y);
gf[y].push_back(x);
}
}
void dfs(int nod){
viz[nod] = 1;
//for(it i = gf[nod].begin(); i != gf[nod].end(); ++i){
for(unsigned i = 0; i<gf[nod].size(); ++i){
if (viz[gf[nod][i]]==0){
++n_sol;
v[n_sol] = make_pair(nod,gf[nod][i]);
dfs(gf[nod][i]);
}
}
}
void scrie(){
g<<2*(n-1)<<"\n";
for(int i=n_sol; i>0; --i) g<<v[i].second<<" "<<v[i].first<<"\n";
for(int i=1; i<=n_sol; ++i) g<<v[i].first<<" "<<v[i].second<<"\n";
}
int main(){
citeste();
dfs(1);
for(int i=1; i<=n; ++i){
if (viz[i]==0){
g<<"-1";
return 0;
}
}
scrie();
f.close();
g.close();
return 0;
}