Cod sursa(job #278272)

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


int m,n,s,u,i,a[NMax][NMax],viz[NMax],coada[3*NMax],unde[NMax],un,cat[NMax];

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


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


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

  for(int i4=1; i4<=n; i4++) fout<<cat[i4]<<" ";
 // getche();
 fout.close();
  return 0;

}