Cod sursa(job #590287)

Utilizator t2010tZaharia Teofil t2010t Data 16 mai 2011 16:45:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

struct s_node
{
vector <int> ad;
int d;
bool v;
};

int n,m,s;
s_node node[100001];
queue <int> q;

int main()
{
ifstream in("bfs.in");
ofstream out("bfs.out");

int i1,x,y;
vector <int>::iterator it1;

in>>n>>m>>s;
for(i1=0;i1<m;i1++)
	{
	in>>x>>y;
	node[x].ad.push_back(y);
	}

q.push(s);
node[s].v =true;

while(!q.empty())
	{
	for(it1 = node[q.front()].ad.begin(); it1 != node[q.front()].ad.end(); it1++)
		if(!node[*it1].v)
			{
			node[*it1].v = true;
			node[*it1].d = node[q.front()].d + 1;
			q.push(*it1);
			}
	q.pop();
	}

for(i1=1;i1<n+1;i1++)
	if(!node[i1].d)
		{
		if(i1 != s)
			out<<"-1 ";
		else
			out<<"0 ";
		}
	else
		out<<node[i1].d<<' ';

in.close();
out.close();
return 0;
}