Pagini recente » Cod sursa (job #3203645) | Cod sursa (job #2364536) | Cod sursa (job #343313) | Cod sursa (job #1537572) | Cod sursa (job #1979569)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int start[100001], t[2][1000001], coada[100001], ic, sfc, viz[100001], d[100001];
int n, m;
int main()
{int i, j, x, y, k = 0, s;
f>>n>>m>>s;
for(i = 1; i <= m; i++)
{
f>>x>>y;
if(x!=y){
k ++;
t[0][k] = y;
t[1][k] = start[x];
start[x] = k;}
}
int man = start[2];
ic = sfc = 1;
coada[1] = s;
viz[s] = 1;
while(ic <= sfc)
{
int man = start[coada[ic]];
while(man)
{
if(viz[t[0][man]]==0){
sfc ++;
coada[sfc] = t[0][man];
viz[t[0][man]] = 1;
d[t[0][man]] = d[coada[ic]] + 1;
}
man = t[1][man];
}
ic++;
}
for(i = 1; i<= n; i++)
if(viz[i])g<<d[i]<<" ";
else
g<<-1<<" ";
return 0;
}