Pagini recente » Cod sursa (job #430777) | Cod sursa (job #644050) | Cod sursa (job #2339212) | Cod sursa (job #1492505) | Cod sursa (job #3001219)
#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;
viz[start]=1;
q.push(start);
d[start]=0;
while(!q.empty())
{
int x=q.front();
q.pop();
for(auto i:G[x]){
if(!viz[i])
q.push(i),d[i]=d[x]+1,viz[i]=1;
}
}
for(int i=1;i<=n;i++)
if(i==start)
g<<"0"<<" ";
else if(d[i]==0)
g<<-1<<" ";
else g<<d[i]<<" ";
}
int main()
{
citire();
bfs(start);
return 0;
}