Cod sursa(job #2326633)

Utilizator CojocaruVicentiuCojocaru Vicentiu CojocaruVicentiu Data 23 ianuarie 2019 19:24:23
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

struct nod{
    int x;
    nod *urm;
};
nod *Li[100],*q;
int n,a,b,cs,ci,i,ip,m,x,qu[100],viz[100],cost[100];

void bfs(int ip)
{
     cs=ci=1;
    qu[1]=ip;
    viz[ip]=1;
    cost[ip]=1;
    q=new nod;
    while(cs<=ci)
    {
        x=qu[cs];cs++;

        q=Li[x];
        while(q!=NULL)
        {
            if(viz[q->x]==0)
            {
                qu[++ci]=q->x;
                viz[q->x]=1;
                cost[q->x]=cost[x]+1;
            }
            q=q->urm;
        }
    }
}

int main()
{
    fin>>n>>m>>ip;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b;
        q=new nod;
        q->urm=Li[a];
        q->x=b;
        Li[a]=q;
    }
    bfs(ip);
    for(i=1;i<=n;i++)
        fout<<cost[i]-1<<' ';

    fin.close();
    fout.close();
    return 0;
}