Pagini recente » Cod sursa (job #2558031) | Cod sursa (job #1166083) | Cod sursa (job #2602231) | Cod sursa (job #2221801) | Cod sursa (job #2197315)
#include <bits/stdc++.h>
using namespace std;
vector<int>nod[100005];
deque<pair<int,int> >dq;
int n,m,s,x,y;
bitset<100005>ap;
int mn[100005];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
nod[x].push_back(y);
}
dq.push_back({s,0});
mn[s]=0;
ap[s]=1;
while(!dq.empty())
{
int which=dq.front().first;
int lenght=dq.front().second;
dq.pop_front();
for(int i=0;i<nod[which].size();i++)
{
if(ap[nod[which][i]])
continue;
mn[nod[which][i]]=lenght+1;
ap[nod[which][i]]=1;
dq.push_back({nod[which][i],lenght+1});
}
}
for(int i=1;i<=n;i++)
{
if(mn[i]>0 || i==s)
printf("%d ",mn[i]);
else
printf("-1 ");
}
return 0;
}