Pagini recente » Cod sursa (job #232948) | Cod sursa (job #901739) | Cod sursa (job #2113534) | Cod sursa (job #2118997) | Cod sursa (job #640215)
Cod sursa(job #640215)
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
typedef struct nod
{
int inf;
nod *urm;
} NOD;
typedef NOD *graf[100010];
graf G;
NOD *c,*p;
int n,m,s,viz[100010];
void citire()
{
f>>n>>m>>s;
int a,b;
for(int i=1;i<=m;i++)
{
f>>a>>b;
p=new NOD;
p->inf=b;
p->urm=G[a];
G[a]=p;
}
f.close();
}
void dfs(int x)
{
c=new NOD;
c->inf=x;c->urm=NULL;
viz[x]=1;
p=c;
while(p)
{
NOD *q=G[p->inf];
while(q)
{
if(!viz[q->inf])
{
NOD *r=new NOD;
r->inf=q->inf;
c->urm=r;
r->urm=NULL;
c=r;
viz[q->inf]=viz[p->inf]+1;
}
q=q->urm;
}
p=p->urm;
}
}
void afis()
{
for(int i=1;i<=n;i++)
if(viz[i]>1||i==s)
g<<viz[i]-1<<" ";
else
g<<"-1 ";
g<<endl;
g.close();
}
int main()
{
citire();
dfs(s);
afis();
return 0;
}