Cod sursa(job #508418)

Utilizator loginLogin Iustin Anca login Data 8 decembrie 2010 10:42:26
Problema Mesaj4 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# 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;
}