Cod sursa(job #1076697)

Utilizator anaid96Nasue Diana anaid96 Data 10 ianuarie 2014 15:00:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#include<vector>
#include<queue>

#define Nmax 100001

FILE *in,*out;

using namespace std;

int n,m,s;
int x,y;
int viz[Nmax];

vector<int> graf[Nmax];
queue<int> q;

int main(void)
{
	in=fopen("bfs.in","rt");
	out=fopen("bfs.out","wt");
	fscanf(in,"%d%d%d",&n,&m,&s);
	for(int i=1;i<=m;++i)
	{
		fscanf(in,"%d%d",&x,&y);
		graf[x].push_back(y);
	}	
	q.push(s);
	viz[s]=1;
	while(!q.empty())
	{
		int curent=q.front();
		q.pop();
		vector<int>::iterator it,end=graf[curent].end();
		for(it=graf[curent].begin() ; it!=end ; ++it)
		{
			if(!viz[*it])
			{
				q.push(*it);
				viz[*it]=viz[curent]+1;
			}	
		}	
	}	
	for(int i=1;i<=n;i++)
		fprintf(out,"%d ",viz[i]-1);
	fclose(in);
	fclose(out);
	return 0;
}