Pagini recente » Cod sursa (job #1420987) | Cod sursa (job #1083557) | Cod sursa (job #3351751) | Cod sursa (job #1855718) | Cod sursa (job #1423209)
#include <fstream>
const int N = 100001, M = 200001;
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
int nr, lst[N], viz[N], vf[M], urm[M];
void adauga(int x, int y)
{
nr++;
vf[nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
int main()
{
int n, m, s, cod[100001], inc, sf, i, e, x, y, p;
in >> n >> m >> s;
for(i=1; i<=n; i++)
{
viz[i]=-1;
}
viz[s]=0;
for(i=0; i<m; i++)
{
in >> inc >> sf;
//a[inc][sf]=1;
adauga(inc, sf);
}
inc=sf=1;
cod[inc]=s;
while(inc<=sf)
{
x = cod[inc++];
p = lst[x];
while(p != 0)
{
y = vf[p];
p = urm[p];
if(viz[y]==-1)
{
sf++;
cod[sf]=y;
viz[y]=viz[x]+1;
}
}
}
for(i=1; i<=n; i++)
{
out << viz[i] << " ";
}
return 0;
}