Pagini recente » Cod sursa (job #2109421) | Cod sursa (job #420015) | Cod sursa (job #1924759) | Cod sursa (job #1948830) | Cod sursa (job #508418)
Cod sursa(job #508418)
# include <fstream>
# include <iostream>
# include <vector>
# include <algorithm>
# include <queue>
# define DIM 100003
# define pb push_back
using namespace std;
int n, m, v[DIM], T, x[2*DIM], y[2*DIM];
vector<int>G[DIM];
queue<int>Q;
void read ()
{
ifstream fin ("mesaj4.in");
fin>>n>>m;
int x, y;
for(int i=1;i<=m;++i)
{
fin>>x>>y;
G[x].pb(y);
G[y].pb(x);
}
}
void BF (int start)
{
int k;
v[start]=1;
Q.push(start);
while (Q.size())
{
k=Q.front();Q.pop();
for(vector<int>::iterator I=G[k].begin();I<G[k].end();++I)
if (!v[*I])
{
x[++T]=*I;y[T]=k;
Q.push(*I);
v[*I]=1;
}
}
}
void DF (int k, int q)
{
v[k]=q;
for(vector<int>::iterator I=G[k].begin();I<G[k].end();++I)
if (v[*I]!=q)
{
x[++T]=k;y[T]=*I;
v[*I]=q;
DF(*I, q);
}
}
int main()
{
freopen("mesaj4.out", "w", stdout);
read ();
DF(n, 1);
printf("%d\n", 2*T);
for(int i=1;i<=T;++i)
printf("%d %d\n", x[i], y[i]);
for(int i=T;i;--i)
printf("%d %d\n", y[i], x[i]);
return 0;
}