Pagini recente » Cod sursa (job #2399870) | Cod sursa (job #2165030) | Cod sursa (job #974410) | Cod sursa (job #1210369) | Cod sursa (job #2403607)
#include <iostream>
#include<vector>
using namespace std;
#define maxn 100010
vector <int> vecini[maxn];
int cost[maxn],nr[maxn],lista[maxn],start,M,N;
void solve(){
for(int i=1; i<=N; i++){
cost[i]=-1;
}
int p=1;
lista[p]=start;
cost[start]=0;
for(int u=1; p>=u; u++)
for(int i=0; i<nr[lista[u]]; i++)
if(cost[vecini[lista[u]][i]]==-1){
lista[++p]=vecini[lista[u]][i];
cost[lista[p]]=cost[lista[u]]+1;
}
}
int main()
{
cin>>N>>M>>start;
int x,y;
for(int i=1; i<=M; i++){
cin>>x>>y;
vecini[x].push_back(y);
}
for(int i=1; i<=N; i++){
nr[i]=vecini[i].size();
}
solve();
for(int i=1; i<=N; i++)
cout<<cost[i]<<' ';
}