Pagini recente » Cod sursa (job #2983672) | Cod sursa (job #2507978) | Cod sursa (job #2716222) | Cod sursa (job #530716) | Cod sursa (job #2111557)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ofstream fo("bfs.out");
ifstream fi("bfs.in");
vector <int> vecini[1000010];
queue <int> q;
bool vazut[100010];
int n,m,s,dist [100010],a,b;
int main()
{
fi>>n>>m>>s;
q.push(s);
vazut[s]=1;
for(int i=1; i<=m; i++)
{
fi>>a>>b;
vecini[a].push_back(b);
}
while(!q.empty())
{
int curent=q.front();
q.pop();
for(auto i:vecini[curent] )
{
int next=i;
if(!vazut[next])
{
vazut[i]=true;
q.push(next);
dist[next]=dist[curent]+1;
}
}
}
for(int i=1; i<=n; i++)
{
if(i==s)
fo<<"0"<<" ";
else
{
if(dist[i])
fo<<dist[i]<<" ";
else
fo<<"-1"<<" ";
}
}
return 0;
}