Cod sursa(job #229135)

Utilizator P1gl3TGilca Mircea Alexandru P1gl3T Data 9 decembrie 2008 13:56:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<queue>
#include<vector>
#define N 100002
using namespace std;
vector<int> v[N];
bool viz[N];
vector<int> d(N,-1);
queue<int> c;
int n,m,s;
void bf()
{
	c.push(s);
	d[s]=0;
	while(!c.empty())
	{
		int st=c.front();
		for(vector<int>::iterator it=v[st].begin(); it!=v[st].end(); ++it)
			if(!viz[*it])
			{
				viz[*it]=1;
				c.push(*it);
				d[*it]=d[st]+1;
			}
		c.pop();
	}
}

void afis()
{
	for(int i=1;i<=n;++i)
		printf("%d ",d[i]);
	printf("\n");
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	int a,b,i;
	for(i=0;i<m;++i)
	{
		scanf("%d%d",&a,&b);
		v[a].push_back(b);
	}
	viz[s]=1;
	bf();
	afis();
	return 0;
}