Pagini recente » Cod sursa (job #2373221) | Cod sursa (job #496077) | Cod sursa (job #509497) | Cod sursa (job #3283107) | Cod sursa (job #2475359)
#include<bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
struct nod
{
int index;
int cost;
};
vector<int> adiacenta[100001];
bool parcurs[100001];
int results[100001];
int n,m,s;
void read()
{
in>>n>>m>>s;
int a,b;
for(int i=0; i<m; i++)
{
in>>a>>b;
adiacenta[a].push_back(b);
}
}
void bfs()
{
nod inceput{s,0};
deque<nod> l;
parcurs[inceput.index]=true;
l.push_back(inceput);
while(l.size())
{
nod a=l.front();
for(int i=0; i<adiacenta[a.index].size(); i++)
{
if(!parcurs[adiacenta[a.index][i]])
{
parcurs[adiacenta[a.index][i]]=true;
nod b{adiacenta[a.index][i],a.cost+1};
results[b.index]=b.cost;
l.push_back(b);
}
}
l.pop_front();
}
}
int main()
{
read();
bfs();
for(int i=1; i<=n; i++)
{
if(results[i] || i==s)
out<<results[i]<<" ";
else
{
out<<-1<<" ";
}
}
}