Pagini recente » Cod sursa (job #969108) | Cod sursa (job #199224) | Cod sursa (job #717149) | Cod sursa (job #1059219) | Cod sursa (job #1755423)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <bitset>
#define dim 100009
#define pb push_back
#define INF 0x3f3f3f3f
using namespace std;
ofstream out("bfs.out");
bitset < dim > uz;
queue < int > Q;
int n, dist[dim], S;
vector <int>G[dim];
void read();
void bfs(int nood);
int main()
{
read();
bfs(S);
for(int i = 1 ; i<=n; ++i)
if(dist[i] == INF)
{
out << -1 << " ";
}
else
{
out << dist[i] << " ";
}
return 0;
}
void read()
{
ifstream in("bfs.in");
int m;
in >> n >> m >> S;
for(int x,y; m; --m)
{
in >> x >> y;
G[x].pb(y);
}
}
void bfs(int root)
{
for(int i = 1; i<=n; ++i)
dist[i] = INF;
dist[root] = 0;
Q.push(root);
while(!Q.empty())
{
int k = Q.front();
Q.pop();
for(vector < int>:: iterator I = G[k].begin(); I!= G[k].end(); ++I)
if(dist[*I] == INF)
{
dist[*I] = dist[k] + 1;
Q.push(*I);
}
}
}