Pagini recente » Cod sursa (job #2864721) | Cod sursa (job #1539618) | Cod sursa (job #1336061) | Cod sursa (job #1881483) | Cod sursa (job #1145115)
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
vector<int> a[100000];
int viz[100000], q[100000], d[100000];
int main()
{
int n, m, s, x, y, i, prim, ultim;
FILE *fin, *fout;
fin=fopen("bfs.in", "r");
fout=fopen("bfs.out", "w");
fscanf(fin, "%d %d %d", &n, &m, &s);
for(i=0; i<m; i++) {
fscanf(fin, "%d %d", &x, &y);
a[x-1].push_back(y-1);
}
s--;
for(i=0; i<n; i++) {
viz[i]=0;
d[i]=-1;
}
prim=0;
ultim=0;
q[0]=s;
viz[s]=1;
ultim++;
d[s]=0;
while(prim<=ultim) {
for(i=0; i<a[q[prim]].size(); i++)
if(viz[a[q[prim]][i]]==0) {
q[ultim]=a[q[prim]][i];
viz[q[ultim]]=1;
ultim++;
d[q[ultim-1]]=d[q[prim]]+1;
}
prim++;
}
for(i=0; i<n; i++)
cout<<d[i]<<" ";
}