Cod sursa(job #1947086)

Utilizator ButmalaiDanButmalai Dan ButmalaiDan Data 30 martie 2017 18:57:07
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
struct nod{
	int val;
	nod* next;
};
void add(nod* &p, int x)
{
	nod* q = new nod;
	q->val = x;
	q->next = p;
	p = q;
}
nod* a[100100];
int cost[100100], n, m, v[100100], coada[2000100], s, x, y;
void bfs(int x){
	v[x] = 1;
	int st = 1, dr = 1;
	coada[st] = x;
	while(st <= dr)
	{
		x = coada[st];
		for (nod* q = a[x]; q!= NULL; q = q->next)
		{
			if(!v[q->val])
			{
				dr++;
				coada[dr] = q->val;
				cost[q->val] = cost[x] + 1;
				v[q->val] = 1;
			}
		}
		st++;
	}
}
int main()
{
	ifstream cin("bfs.in");
	ofstream cout("bfs.out");
	cin >> n >> m >> s;
	while(m--)
	{
		cin >> x >> y;
		add(a[x],y);
	}
	bfs(s);
	for(int i = 1; i <= n; i++)
	{
		if (i == s) cout << "0 ";
		else cout << (cost[i] == 0 ? -1 :cost[i])<< " ";
	}
}