Cod sursa(job #1519395)

Utilizator Andrei66Andrei Rusu Andrei66 Data 7 noiembrie 2015 12:05:50
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

#define x first
#define y second
#define VM 100005
#define pb push_back
#define ppb pop_back
#define ll long long
#define pii pair<int, int>

using namespace std;

//don't forget to put input in the file!!!
ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n, m, source;
vector<int> g[VM];
// bool viz[VM];
int dist[VM];
queue<int> q;

void bfs(int source){
	q.push(source);
	dist[source] = 0;
	while(!q.empty()){
		int fr = q.front();
		q.pop();
		for(int i=0; i<g[fr].size(); ++i){
			// cout<<"aici";
			int vecin = g[fr][i];
			if(dist[vecin] == -1){
				dist[vecin] = dist[fr] + 1;
				q.push(vecin); 
			}
		}
	}
}

int main(){ 
	fin>>n>>m>>source;
	for(int i=1; i<=m; ++i){
		int x, y;
		f>>x>>y;
		g[x].pb(y);
	}
	memset(dist, -1, sizeof(dist)); //punem -1 peste tot
	// for(int i=1; i<=n; ++i)	dist[i] = -1;

	bfs(source);
	for(int i=1; i<=n; ++i)
		fout<<dist[i]<<' ';
	

	return 0;
}