Pagini recente » Cod sursa (job #1852252) | Cod sursa (job #821592) | Cod sursa (job #1371754) | Cod sursa (job #2069709) | Cod sursa (job #508416)
Cod sursa(job #508416)
# 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], T1, T2, 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[++T1]=*I;y[T1]=k;
Q.push(*I);
v[*I]=1;
}
}
}
void DF (int k)
{
v[k]=0;
for(vector<int>::iterator I=G[k].begin();I<G[k].end();++I)
if (v[*I])
{
x[++T2]=k;y[T2]=*I;
v[*I]=0;
DF(*I);
}
}
int main()
{
freopen("mesaj4.out", "w", stdout);
read ();
BF(n);
T2=T1;
DF(n);
printf("%d\n", T2);
for(int i=T1;i;--i)
printf("%d %d\n", x[i], y[i]);
for(int i=T1+1;i<=T2;++i)
printf("%d %d\n", x[i], y[i]);
return 0;
}