Pagini recente » Cod sursa (job #14580) | Cod sursa (job #1248855) | Cod sursa (job #417098) | Cod sursa (job #1337868) | Cod sursa (job #678673)
Cod sursa(job #678673)
#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,viz[100005],gri[100005],ok;
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]&&!viz[i])
{
p=v[i];
while(p)
{
gri[p->x]+=pas*(!viz[p->x]);
p=p->urm;
}
viz[i]++;
ok=1;
pas++;
}
}
for(i=1;i<=n;i++)
if(gri[i]==0)
gri[i]=-1;
gri[s]=0;
for(i=1;i<n;i++)
g<<gri[i]<<' ';
g<<gri[n]<<'\n';
f.close();
g.close();
return 0;
}