Cod sursa(job #819642)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 19 noiembrie 2012 15:28:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
#define BM 100005
#define mare (1<<30)
typedef vector<int>::iterator it;
vector<int> g[BM];
queue<int> c;
int n,m,s,rez[BM];
void bfs()
{
	for(;c.size();c.pop())
	{
		int f=c.front();
		for(it ii=g[f].begin();ii!=g[f].end();++ii)
		{
			if(rez[*ii]==mare)
			{
				rez[*ii]=rez[f]+1;
				c.push(*ii);
			}
		}
	}
}
int main ()
{
	int i,a,b;
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&s);
	for(;scanf("%d %d",&a,&b)!=-1;)
	{
		g[a].push_back(b);
	}
	for(i=1;i<=n;++i)
	rez[i]=mare;
	rez[s]=0;
	c.push(s);
	bfs();
	for(i=1;i<=n;++i)
		if(rez[i]==mare)
		printf("-1 ");
		else
		 printf("%d ",rez[i]);
}