Cod sursa(job #2384671)

Utilizator JarvisAdrian Petrusca Jarvis Data 21 martie 2019 07:34:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>

using namespace std;
 
vector <int> list[100001];
queue <int> q;
int n, m, s, x, y;
bool visit[100001];
int a[100010];

 
void bfs(int node)
{
	q.push(s);
	visit[node] = 1;
	a[node] = 1;
 
	while(!q.empty())
	{
		int t = q.front();
		q.pop();
		for (int i = 0; i < list[t].size(); i++) 
		    if (!visit[list[t][i]])
			{
			    q.push(list[t][i]); 
				visit[list[t][i]] = 1; 
				a[list[t][i]] = a[t] + 1;
			}
	}
}

int main ()
{
	ifstream cin("bfs.in");
	ofstream cout("bfs.out");
	
	cin >> n >> m >> s;
	for (int i = 1; i <= m; i++)
	{
		cin >> x >> y;
		list[x].push_back(y);
	}
	
	bfs(s);
	
	for (int i = 1; i <= n; i++)
	    cout << a[i]-1 <<" ";
    return 0;
}