Pagini recente » Cod sursa (job #2825313) | Cod sursa (job #1760180) | Cod sursa (job #1763372) | Cod sursa (job #370947) | Cod sursa (job #833076)
Cod sursa(job #833076)
#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],d[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,i;
for(int i=1;i<=n;++i)
d[i]=-1;
i=k;
d[i]=0;
c=l[i];
tail[1]=i;
rank[1]=0;
p=u=1;
while(p<=u)
{
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;
d[c->inf]=rank[u];
}
c=c->adr;
}
p++;
}
d[k]=0;
for(i=1;i<=n;++i)
g<<d[i]<<" ";
}
int main ()
{
f>>n>>m>>k;
for(int i=1;i<=m;++i)
{
f>>x>>y;
if(x!=y)
create(x,y);
}
bfs();
return 0;
}