Pagini recente » Cod sursa (job #2539461) | Cod sursa (job #1905566) | Cod sursa (job #648742) | Cod sursa (job #1905957)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
unsigned int N, M, S;
unsigned int x, y;
vector <unsigned int> G[100000];
queue <unsigned int> Q;
bool seen[100001];
unsigned int node;
unsigned int i;
int sol[100001];
int main ()
{
fin >> N >> M >> S;
for (i=1; i<=M; i++)
{
fin >> x >> y;
G[x].push_back(y);
}
sol[S] = 1;
seen[S] = 1;
Q.push(S);
while (!Q.empty())
{
node = Q.front();
Q.pop();
for (i=0; i<G[node].size(); i++)
if (!seen[G[node][i]])
{
seen[G[node][i]] = 1;
sol[G[node][i]] = sol[node] + 1;
Q.push(G[node][i]);
}
}
for (i=1; i<=N; i++)
fout << sol[i]-1 << ' ';
return 0;
}