Pagini recente » Cod sursa (job #2182620) | Cod sursa (job #2249398) | Cod sursa (job #1774205) | Cod sursa (job #396124) | Cod sursa (job #2928951)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int N=1e5;
int n;
vector<int> la[N];
bool parcurs[N];
int pasi[N];
void bfs(int start)
{
queue<pair<int,int> >q;
q.push(make_pair(start,0));
parcurs[start]=1;
while(!q.empty())
{
int nod=q.front().first;
int nr=q.front().second;
pasi[nod]=nr;
for(int i=0;i<la[nod].size();i++)
if(!parcurs[la[nod][i]])
{
parcurs[la[nod][i]]=1;
q.push(make_pair(la[nod][i],nr+1));
}
q.pop();
}
}
int main()
{
int m,sursa; in>>n>>m>>sursa;
for(int i=1;i<=m;i++)
{
int x,y; in>>x>>y;
la[x].push_back(y);
}
bfs(sursa);
for(int i=1;i<=n;i++)
if(!pasi[i] && i != sursa) cout<<-1<<' ';
else out<<pasi[i]<<' ';
}