Pagini recente » Cod sursa (job #3273672) | Cod sursa (job #50381) | Cod sursa (job #1809427) | Cod sursa (job #1614915) | Cod sursa (job #2143218)
#include <iostream>
#include <fstream>
#define NMAX 22599
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int l[NMAX][NMAX], C[NMAX], tata[NMAX], niv[NMAX];
int n, m, h, p, u;
bool viz[NMAX];
void citire()
{
int x,y;
f>>n>>m>>h;
for(int i = 1; i <= m;i++)
{
f>>x>>y;
l[x][0]++;
l[x][l[x][0]] = y;
}
}
void BFS(int s)
{
int i, j, k;
p=1;
viz[s] = 1;
C[++u] = s;
niv[s] = 0;
while(p<=u)
{
i = C[p++];
//cout<<i<<" ";
for(int j=1;j<=l[i][0];j++)
{
k = l[i][j];
if(!viz[k])
{
viz[k] = 1;
C[++u] = k;
tata[k] = i;
niv[k] = niv[i] + 1;
}
}
}
//cout<<"\n";
}
int main()
{
citire();
BFS(h);
for(int i = 1;i <= n;i++)
if(!viz[i])
niv[i] = -1;
for(int i = 1;i <= n;i++)
g<<niv[i]<<" ";
return 0;
}