Pagini recente » Cod sursa (job #1340296) | Cod sursa (job #3168317) | Cod sursa (job #1135588) | Cod sursa (job #2835181) | Cod sursa (job #2005581)
#include <fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int N = 100005;
struct nod{
int nr;
nod *urm;
}*v[N];
int d[N],c[N];
void adaug(int x,int y){
nod *nou = new nod;
nou->nr = y;
nou->urm = v[x];
v[x] = nou;
}
void bfs(int ns){
int st = 1, dr = 1, val;
d[ns] = 1;
c[st] = ns;
while(st <= dr){
for(nod *p = v[c[st]];p;p = p->urm){
val = p->nr;
if(d[val] == 0){
c[++dr] = val;
d[val] = d[c[st]] + 1;
}
}
st++;
}
}
int main()
{
int n,m,ns,x,y;
in>>n>>m>>ns;
for(int i=1;i<=m;i++){
in>>x>>y;
adaug(x,y);
}
in.close();
bfs(ns);
for(int i=1;i<=n;i++)
out<<d[i] - 1<<" ";
out.close();
return 0;
}