Pagini recente » Cod sursa (job #774618) | Cod sursa (job #2451772) | Cod sursa (job #2141505) | Cod sursa (job #333364) | Cod sursa (job #2094184)
#include<bits/stdc++.h>
using namespace std;
const int N=100020;
bool v[N];
int k[N];
vector <int> d, mda[N];
int main(){
int m, n, sr;
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>sr;
while(m--){
int x, y;
f>>x>>y;
mda[x].push_back(y);
}
d.push_back(sr);
int st=0, dr=0;
v[sr]=1;
while(st<=dr){
int nod=d[st], j=mda[nod].size();
for(int i=0;i<j;i++)if(!v[mda[nod][i]]){
v[mda[nod][i]]=1;
d.push_back(mda[nod][i]);
k[mda[nod][i]]=k[nod]+1;
dr++;
}
st++;
}
k[sr]=-2;
for(int i=1;i<=n;i++)if(k[i]==0)k[i]=-1;
k[sr]=0;
for(int i=1;i<=n;i++)g<<k[i]<<' ';
return 0;
}