Pagini recente » Cod sursa (job #182814) | Cod sursa (job #2281176) | Cod sursa (job #376220) | Cod sursa (job #2211251) | Cod sursa (job #1363932)
#include <iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int c[100],viz[100],n,t[1000],b[100][100],s;
vector<int> a[100001];
vector<int>::iterator it;
void bfs(int nod)
{int u,p,i,x,ok,k=0;
u=p=viz[nod]=1;
c[1]=nod;
while(p<=u)
{x=c[p];
for(i=1;i<=n;i++)
{ok=0;
for(it=a[x].begin();it!=a[x].end();it++)
if(*it==i) ok=1;
if(ok==1 && viz[i]==0) {c[++u]=i;
viz[i]=1;
t[i]=x;
}
}
p++;
}
}
void parc(int fin)
{int k=0,i;
i=fin;
while(i)
{i=t[i];
k++;
}
k--;
if(k==0) if(s==fin) g<<"0"<<" ";
else g<<"-1"<<" ";
else g<<k<<" ";
}
int main()
{int m,x,y,i;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{f>>x;
f>>y;
a[x].push_back(y);
}
bfs(s);
for(i=1;i<=n;i++)
parc(i);
}