Cod sursa(job #1716321)

Utilizator radudurlesteanuDurlesteanu Radu Stefan radudurlesteanu Data 12 iunie 2016 14:48:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <queue>
using namespace std;
struct nod{
           int vf;
           nod *urm;
          };
int n,m,i,j,s,viz[100001],x,y;
nod *a[100001],*p;
void bfs(int x)
{
queue <int> q;
int i,vf;
q.push(x);
while (!q.empty())
   {
   vf=q.front();q.pop();
   for (p=a[vf];p!=NULL;p=p->urm)
   if (!viz[p->vf]) {
                     viz[p->vf]=viz[vf]+1;
                     q.push(p->vf);
                    }
   }
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for (i=1;i<=m;i++)
   {
   scanf("%d%d",&x,&y);
   p=new nod;
   p->vf=y;
   p->urm=a[x];
   a[x]=p;
   }
viz[s]=1;
bfs(s);
for (i=1;i<=n;i++)
printf("%d ",viz[i]-1);
}