Cod sursa(job #1985073)

Utilizator miruna999Morarasu Miruna miruna999 Data 26 mai 2017 19:31:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod{int nr; nod *urm;}*a[100001];
int n,m,x0,d[100001],x[100001];
bool viz[100001];

void citire()
{
    f>>n>>m>>x0;
    int x,y;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        nod *p=new nod;
        p->urm=a[x];
        p->nr=y;
        a[x]=p;
    }
}

void bf()
{
    int st=1,dr=1;
    x[1]=x0;
    viz[x0]=1;
    while(st<=dr)
    {
        for(nod *p=a[x[st]];p;p=p->urm)
            if(!viz[p->nr])
                x[++dr]=p->nr,viz[p->nr]=1,d[x[dr]]=d[x[st]]+1;
        ++st;
    }
}

int main()
{
    citire();
    bf();
    for(int i=1;i<=n;++i)
    {
        if(d[i]==0 && i!=x0)
            g<<-1<<" ";
        else
            g<<d[i]<<" ";
    }
    return 0;
}