Cod sursa(job #2003075)

Utilizator 00MikeComputer00Mihnea Andreescu 00MikeComputer00 Data 21 iulie 2017 18:04:07
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
const int nm=100005;
vector<int>G[nm];
queue<int>q;
int viz[nm],d[nm],t[nm];
void BFS(int nod)
{
	q.push(nod);
	viz[nod]=1;
	while(!q.empty())
	{
		int y=q.front(),x=G[y].size(),i;
		q.pop();
		for(i=0;i<x;i++)
			if(!viz[G[y][i]])
			{
				viz[G[y][i]]=1;
				d[G[y][i]]=d[y]+1;
				t[G[y][i]]=y;
				q.push(G[y][i]);
			}
	}
}
int main()
{
	int n,m,i,u,v,nr=0,k;
	cin>>n>>m>>k;
	for(i=1;i<=m;i++)
	{
		cin>>u>>v;
		G[u].push_back(v);
	}
	BFS(k);
	for(i=1;i<=n;i++)
		if(!d[i])
		{
			if(i==k)
				cout<<"0 ";
			else
				cout<<"-1 ";
		}
		else
			cout<<d[i]<<" ";
	cin.close();
	cout.close();
	return 0;
}