Cod sursa(job #1211400)

Utilizator cojocarugabiReality cojocarugabi Data 22 iulie 2014 15:38:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <cstring>
#define nmax 1000001
using namespace std;
vector <int> s[nmax];
long v[nmax],nr[nmax],p[nmax];
ifstream fi("bfs.in");
ofstream fo("bfs.out");
int main(void)
{
	int n,m,nod;
	fi>>n>>m>>nod;
	for(int i=1;i<=m;++i)
	{
		int x,y;
		fi>>x>>y;
		s[x].push_back(y);
	}
	for(int i=1;i<=n;++i)
	   nr[i]=s[i].size();
	memset(v,-1,sizeof(v));   
	v[nod]=0;
	long f,g=1;
	p[1]=nod;
	for (f=1;f<=g;++f)
	  {
	     for (long i=0;i<nr[p[f]];++i)
		 if (v[s[p[f]][i]]==-1)
		 {
		 	p[++g]=s[p[f]][i];
		 	v[p[g]]=v[p[f]]+1;
		 }
      }
    for (int i=1;i<=n;++i)
	    fo<<v[i]<<" ";
    fo<<"\n";
	fo.close(); 
	return 0;		  
}