Cod sursa(job #493909)

Utilizator CBogdanCiobanu Bogdan CBogdan Data 19 octombrie 2010 20:55:53
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<vector>
#include<deque>
#include<utility>

using namespace std;

void read();
void solve();
void show();

int i,j,N,C,cost[100001],n,m,s,cst,V,a,b;

vector<int> v[100001];
deque<int> q;

int main()
{
	read();
	solve();
	show();
	
	return 0;
}

void read()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&s);
	for(;m;m--)
	{
		scanf("%d %d",&a,&b);
		v[a].push_back(b);
	}
}

void solve()
{
	vector<int>:: iterator it;
	for(i=1;i<=n;i++)
		cost[i]=-1;
	q.push_back(s); cost[s]=0;
	while(!q.empty())
	{
		N=q.front(); C=cost[N];
		for(it=v[N].begin();it!=v[N].end();it++)
		{
			cst=C + 1;V=*it;
			if(cost[V]<0)
			{
				cost[V]=cst;
				q.push_back(V);
			}
		}
		q.pop_front();
	}
}
void show()
{
	for(i=1;i<=n;i++)
		printf("%d ",cost[i]);
}