Pagini recente » Cod sursa (job #2504154) | Cod sursa (job #2787264) | Cod sursa (job #1081455) | Cod sursa (job #1576206) | Cod sursa (job #1921486)
#include <iostream>
#include <vector>
#include <bitset>
#include <fstream>
#include <queue>
using namespace std;
ifstream f ("bfs.in");
ofstream t ("bfs.out");
vector <int> dist,v[100010];
void bfs(int nod){
queue <int> q;
bitset <100010> in_queue;
dist[nod]=0;
q.push(nod);
in_queue[nod]=true;
while (!q.empty()){
int current=q.front();
q.pop();
for (auto i:v[current])
if (!in_queue[i])
q.push(i),
in_queue[i]=true,
dist[i]=1+dist[current];
}
};
int main()
{
int n,m,s;
f>>n>>m>>s;
dist.resize(1+n,-1);
for (int x,y,i=0;i<m;++i)
f>>x>>y,
v[x].push_back(y);
bfs(s);
for (int i=1;i<=n;++i)
t<<dist[i]<<" ";
return 0;
}