Pagini recente » Cod sursa (job #1835059) | Cod sursa (job #2892811) | Cod sursa (job #44561) | Cod sursa (job #753270) | Cod sursa (job #3001212)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,start;
int viz[100005],d[100005];
vector<int>G[100005];
void citire()
{
f>>n>>m>>start;
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
G[x].push_back(y);
}
}
void bfs(int start)
{
queue<int>q;
q.push(start);
d[start]=0;
while(!q.empty())
{
int x=q.front();
q.pop();
if(viz[x]==1)continue;
viz[x]=1;
for(auto i:G[x]){
if(!viz[i])
q.push(i),d[i]=d[x]+1;
}
}
for(int i=1;i<=n;i++)
if(d[i]==0 && i!=start)
g<<"-1 ";
else
g<<d[i]<<" ";
}
int main()
{
citire();
bfs(start);
return 0;
}