Pagini recente » Cod sursa (job #2806806) | Cod sursa (job #397656) | Cod sursa (job #2011061) | Cod sursa (job #579640) | Cod sursa (job #466748)
Cod sursa(job #466748)
#include<fstream>
#include<list>
#include<vector>
using namespace std;
void dfs(int nod);
int n, m;
list<int> v[100001];
list<pair<int, int> > sol;
vector<bool> sel(100001);
int main()
{
ifstream fin("mesaj4.in");
ofstream fout("mesaj4.out");
fin >> n >> m;
for (int i = 1, p1, p2; i <= m; ++i)
{
fin >> p1 >> p2;
v[p1].push_back(p2);
v[p2].push_back(p1);
}
sel[1] = true;
dfs(1);
if (sol.size() != n - 1)
fout << -1;
else
{
fout << sol.size() * 2 << '\n';
for (list<pair<int, int> >::reverse_iterator i = sol.rbegin(); i != sol.rend(); ++i)
fout << (*i).second << ' ' << (*i).first << '\n';
for (list<pair<int, int> >::iterator i = sol.begin(); i != sol.end(); ++i)
fout << (*i).first << ' ' << (*i).second << '\n';
}
}
void dfs(int nod)
{
for (list<int>::iterator i = v[nod].begin(); i != v[nod].end(); ++i)
if (!sel[*i])
{
sel[*i] = true;
sol.push_back(make_pair(nod, *i));
dfs(*i);
}
}