Pagini recente » Monitorul de evaluare | Cod sursa (job #1279045) | Monitorul de evaluare | Cod sursa (job #2013672) | Cod sursa (job #943672)
Cod sursa(job #943672)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector <int> G[100005], cost(100005, -1);
queue <int> Q;
int n, m, s;
int main()
{
cin>>n>>m>>s;
for(int i = 1 ; i <= m ;++ i)
{
int x, y;
cin>>x>>y;
G[x].push_back(y);
}
cin.close();
for(Q.push(s), cost[s]=0 ; !Q.empty() ; Q.pop() )
{
int nod = Q.front();
for(int i = 0 ; i < G[nod].size(); ++i)
if(cost[G[nod][i]] == -1)
cost[G[nod][i]]=cost[nod] + 1,
Q.push( G[nod][i] );
}
for(int i = 1 ; i <= n ;++ i)
cout<<cost[i]<<" ";
cout.close();
return 0;
}