Pagini recente » Cod sursa (job #677739) | Cod sursa (job #238147) | Cod sursa (job #1207761) | Cod sursa (job #2084883) | Cod sursa (job #2550079)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int nmax=1e5+5;
int N, M, X, i, x, y, d[nmax];
vector<int>G[nmax];
bitset<nmax>viz;
queue<int>Q;
void bfs(int nod)
{
Q.push(nod);
viz[nod] = 1;
while(!Q.empty())
{
nod=Q.front();
vector<int>::iterator it;
for(it=G[nod].begin(); it<G[nod].end(); it++)
if(!viz[*it])
{
d[*it]=d[nod]+1;
viz[*it]=1;
Q.push(*it);
}
Q.pop();
}
}
int main()
{
in >> N >> M >> X;
for(i=1; i<=M; i++)
{
in >> x >> y;
G[x].push_back(y);
}
bfs(X);
for(i=1; i<=N; i++)
if(i==X)
out << "0 ";
else if(d[i])
out << d[i] << " ";
else
out << "-1 ";
}