Cod sursa(job #1211385)

Utilizator cojocarugabiReality cojocarugabi Data 22 iulie 2014 15:18:52
Problema BFS - Parcurgere in latime Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <cstring>
#define nmax 100001
using namespace std;
vector <int> s[nmax];
int 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,nmax);   
	v[nod]++;
	long f,g=1;
	p[1]=nod;
	for (f=1;f<=g;++f)
	  {
	     for (int 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(); 		  
}