Cod sursa(job #395383)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 12 februarie 2010 22:26:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <vector>
#include <queue>

#define NMAX 100100

using namespace std;

int N,M,S;
int D[NMAX],viz[NMAX];

vector <int> C[NMAX];
queue <int> Q;

void citire()
{
	FILE *fin=fopen("bfs.in","r");
	
	int i,x,y;
	
	fscanf(fin,"%d %d %d",&N,&M,&S);
	
	for(i=1;i<=M;i++)
		{	
			fscanf(fin,"%d %d",&x,&y);
			C[x].push_back(y);
		}
	
Q.push(S);	
viz[S]++;	
}

void bfs()
{int i,x;
while(!Q.empty())
	{	x=Q.front();
		Q.pop();

			for(i=0;i<C[x].size();i++)
			{	if(viz[C[x][i]]==0)
					{Q.push(C[x][i]);
					D[C[x][i]]=D[x]+1;
					viz[C[x][i]]++;
					}
			}
	}
}

void afisare()
{
	int i;
	FILE *fout=fopen("bfs.out","w");
	
	for(i=1;i<=N;i++)
	{	if(D[i]==0 && i!=S) D[i]=-1;
		fprintf(fout,"%d ",D[i]);
		
	}	
}

int main()
{
	citire();
	bfs();
	afisare();
	
}