Cod sursa(job #694948)

Utilizator hunter_ionutzzzFarcas Ionut hunter_ionutzzz Data 28 februarie 2012 09:35:40
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct {int val,pas;}cd[1000001];
typedef struct nod{int val;
			       nod *next;};
nod *v[100001],*q;
int main()
{int vector[100001],i,n,m,k,a,b;
    fin >> n >> m >> k;
    for (i=1;i<=n;++i)
		vector[i] = -1;
	vector[k] = 0;
    for (i=1;i<=m;++i)
	{   fin >> a >> b;
	    q = new nod;
		q -> next = v[a];
		q -> val = b;
		v[a] = q;
	}
	cd[1].val = k;
	cd[1].pas = 0;
	int ic=0,sc=1;
	while (ic<=sc)
	{   ++ic;
		q = v[cd[ic].val];
	    while (q)
		{   if (v[q->val])
		    {   ++sc;
				cd[sc].val = q->val;
				cd[sc].pas = cd[ic].pas+1;
				vector[q->val] = cd[sc].pas;
			}
			q = q->next;
		}
		v[cd[ic].val] = NULL;
	}
	for (i=1;i<=n;++i)
		fout << vector[i] << " ";
	return 0;
}