Cod sursa(job #825159)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 27 noiembrie 2012 18:02:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#include<algorithm>
#include<deque>
#include<cstring>
#include<vector>
using namespace std;
int m,x,n,i,j,k,a,b,y,rez[100005];
vector<int>v[100005];
deque<int>c;
bool viz[100005];

void bfs(int x)
{
	c.push_back(x),viz[x]=true;
	while (!c.empty())
	{
		x=c.front();
		for (j=0;j<v[x].size();j++) if (!viz[v[x][j]]) c.push_back(v[x][j]),viz[v[x][j]]=true,rez[v[x][j]]=rez[x]+1;
		c.pop_front();
	}
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&x);
	memset(rez,-1,sizeof(rez));
	rez[x]=0;
	for (i=1;i<=m;i++) scanf("%d %d",&a,&b),v[a].push_back(b);
	bfs(x);
	for (i=1;i<=n;i++) printf("%d ",rez[i]);
}