Cod sursa(job #278189)

Utilizator magda_ursuleanUrsulean Magda magda_ursulean Data 12 martie 2009 10:03:37
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
//bfs
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#define NMax 100000


int m,n,s,u,a[NMax][NMax],viz[NMax],coada[3*NMax];

void citire()
{
  ifstream fin("bfs.in");
  int x,y;
  fin>>n>>m>>s;
  for(int i=1; i<=m; i++) { fin>>x>>y;
			    a[x][y]=/*a[y][x]=*/1;
			    viz[i]=0;
			  }
  fin.close();
}


void bfs(int i)
{
  int j;
  for(j=1; j<=n; j++)
    if((a[coada[i]][j]==1) && (viz[j]==0))
       { u++;
	 coada[u]=j;
	 viz[j]=1;
       }
  if (i<=u) bfs(i+1);

}


int main()
{ ofstream fout("bfs.out");
  citire();
  viz[s]=1;
  coada[1]=s;
  u=1;
  bfs(s);
  for(int i=1; i<=n; i++)// cout<<coada[i]<<" ";
    if (coada[i]==0) coada[i]=-1;
  for(i=1; i<=n; i++) fout<<coada[i]<<" ";
 // getche();
 fout.close();
  return 0;

}