Pagini recente » Cod sursa (job #3132648) | Cod sursa (job #1725566) | Cod sursa (job #2746679) | Cod sursa (job #617545) | Cod sursa (job #678705)
Cod sursa(job #678705)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod
{
int x;
nod *urm;
}*v[100005];
nod *p;
int i,n,a,m,b,s,alb[100005],gri[100005],ok,negru[100005];
int main()
{
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>a>>b;
p= new nod;
p->x=b;
p->urm=v[a];
v[a]=p;
}
ok=1;
gri[s]=1;
int pas=1;
while(ok)
{
ok=0;
for(i=1;i<=n;i++)
if(gri[i]&&!negru[i])
{
negru[i]+=pas;
p=v[i];
while(p)
{
alb[p->x]=1;
p=p->urm;
}
ok=1;
}
for(i=1;i<=n;i++)
if(alb[i])
gri[i]=1;
pas++;
}
for(i=1;i<=n;i++)
negru[i]--;
for(i=1;i<n;i++)
g<<negru[i]<<' ';
g<<negru[n]<<'\n';
f.close();
g.close();
return 0;
}