Pagini recente » Cod sursa (job #2512250) | Cod sursa (job #2608371) | Cod sursa (job #3244457) | Cod sursa (job #2866432) | Cod sursa (job #1805074)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
const int NMAX = 100003;
int cost [NMAX] , N , M , S , x ,y;
vector <int> L[NMAX] ;
vector <int> :: iterator i;
queue <int> Q;
void read_input ()
{
in >> N >> M >> S;
for(int i = 1 ; i <= M ; ++ i)
{
in >> x >> y;
L[x].push_back(y);
}
memset(cost , -1 , sizeof(cost));
}
void solve(int node)
{
cost[node] = 0;
Q.push(node);
while(!Q.empty())
{
node = Q.front();
Q.pop();
for(i = L[node].begin() ; i != L[node].end() ; ++ i)
{
if(cost[*i] == -1)
{
cost[*i] = cost[node] + 1;
Q.push(*i);
}
}
}
}
int main()
{
read_input();
solve (S);
for(int i = 1 ; i <= N ; ++ i)
out << cost[i] <<" ";
return 0;
}