Pagini recente » Cod sursa (job #594914) | Cod sursa (job #773923) | Cod sursa (job #1729151) | Cod sursa (job #2336320) | Cod sursa (job #1929239)
#include <fstream>
#include <queue>
#include <vector>
#define MAXN 100002
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
queue <int> Q;
vector <int> G[MAXN];
int start, z;
int viz[100002], n;
inline void read()
{
int m, x, y;
fin >> n >> m >> start;
for (int i = 1; i <= m; i++)
{
fin >> x >> y;
G[x].push_back(y);
//G[y].push_back(x);
}
}
void bf()
{
Q.push(start);
viz[start] = 1;
while (!Q.empty())
{
z = Q.front();
for (vector <int> :: iterator i = G[z].begin(); i != G[z].end(); i++)
{
if (viz[*i] == 0)
{
viz[*i] = viz[z] + 1;
Q.push(*i);
}
}
Q.pop();
}
}
int main ()
{
read();
bf();
for(int i = 1; i <= n; i++)
{
//if (viz[i] == 0)
// viz[i] = -1;
fout << viz[i] - 1 << " ";
}
fin.close(); fout.close(); return 0;
}