Pagini recente » Cod sursa (job #444053) | Cod sursa (job #1436528) | Cod sursa (job #852355) | Cod sursa (job #2828209) | Cod sursa (job #244144)
Cod sursa(job #244144)
#include <fstream.h>
#define infile "bfs.in"
#define outfile "bfs.out"
#define Nmax 40000
ifstream f(infile);
ofstream g(outfile);
char lista[Nmax][Nmax];
int viz[Nmax],c[Nmax],s,n,m;
void citire()
{
int i,j,l;
f>>n>>m>>s;
for (l=1;l<=m;l++)
{
f>>i>>j;
lista[i][j]=1;
}
f.close();
}
void BFS(int start)
{
int i,st,dr;
viz[start]=1;
c[1]=start;
st=1,dr=1;
while (st<=dr)
{
start=c[st++];
for (i=1;i<=n;i++)
if (lista[start][i] && !viz[i])
{
c[++dr]=i;
viz[i]=viz[start]+1;
}
}
}
int main()
{
int i,j;
citire();
BFS(s);
for (i=1;i<=n;i++)
if (viz[i])
g<<viz[i]-1<<" ";
else
g<<-1<<" ";
return 0;
}