Cod sursa(job #851551)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 10 ianuarie 2013 01:08:45
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>
#include<vector>
using namespace std;

vector <int> v[100];

int n,m,s;

void read()
{
	int i,x,y;
	for (i=1;i<=m;++i)
	{
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
		
	}
		
}


void bfs(int nod)
{
	vector <int> q;
	vector <int> l;
	vector <int> viz[100];
	q.push_back(s);
	l.push_back(0);
	
	int p=0,u=0; int i;
	while(p<=u)
	{
		for (i=0;i<v[q[p]].size();++i)				
				if (viz[q[p]][i]!=1)
				{
					u++;
					viz[q[p]][i]=1;
			q.push_back(v[q[p]][i]);
		    l.push_back(l[p]+1);
			if (q[u]==nod) {printf("%d ",l[u]);return;}
				}
		
			p++;
	}
	printf("-1 ");
}



int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	read();
	
	int i;
	for (i=1;i<=n;++i)
		if (s==i) 
			printf("0 ");
		else
		bfs(i);
}