Pagini recente » Cod sursa (job #518413) | Cod sursa (job #927073) | Cod sursa (job #3242378) | Cod sursa (job #2251113) | Cod sursa (job #1111878)
#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();
Q.push(s);
cost[s]=0;
while(!Q.empty())//cat timp coada nu este goala
{
int nod=Q.front();//nod primeste prima valoare din coada
Q.pop();//ulterior, eliminam acea valoare din coada
for(int i = 0 ; i < G[nod].size(); ++i)//vecinii nodului
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;
}