Pagini recente » Cod sursa (job #2681398) | Cod sursa (job #982224) | Cod sursa (job #2747376) | Cod sursa (job #2496342) | Cod sursa (job #829768)
Cod sursa(job #829768)
#include<fstream>
#include<string.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod
{
int inf;
nod *adr;
}*l[100100];
int k,n,m,x,y,tail[100100],rank[100100];
bool viz[100100];
void create (int a,int b)
{
nod *c=new nod;
c->adr=l[a];
c->inf=b;
l[a]=c;
}
void bfs()
{
nod *c;
bool OK;
int p,u;
for(register int i=1;i<=n;++i)
{
memset(tail,0,n);
memset(viz,0,n);
memset(rank,0,n);
c=l[i];
tail[1]=i;
rank[1]=1;
p=u=1;
OK=0;
if(i!=k)
while(p<=u&&!OK)
{
c=l[tail[p]];
while(c!=NULL)
{
if(viz[c->inf]==0)
{
viz[c->inf]=1;
tail[++u]=c->inf;
rank[u]=rank[p]+1;
}
if(c->inf==k)
{
OK=1; break;
}
c=c->adr;
}
p++;
}
else
{
rank[u]=1;
OK=1;
}
if(OK)
g<<rank[u]-1<<" ";
else
g<<"-1"<<" ";
}
}
int main ()
{
f>>n>>m>>k;
for(int i=1;i<=m;++i)
{
f>>x>>y;
create(y,x);
}
bfs();
return 0;
}