Cod sursa(job #2528288)

Utilizator CarlaDianaCarla Diana CarlaDiana Data 21 ianuarie 2020 18:36:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
struct nod {int info;nod *urm;};
nod *lis[100010],*q;
int n,a,b,k,v[100010],c[100010],ci,cs,m,dist[100010],vv[100010];
void addnod(int a, int b)
{
    q=new nod;
    q->urm=lis[a];
    q->info=b;
    lis[a]=q;
}
int main()
{
    fin>>n>>m>>k;
    for(;m;m--)
    {
        fin>>a>>b;
        if(a!=b)
            addnod(a,b);
    }
     c[1]=k;
     v[k]=1;
     dist[1]=0;
     ci=cs=1;
     while(cs<=ci)
     {
         ///c[cs]
         q=lis[c[cs]];
         while(q!=NULL)
         {
             if(v[q->info]==0)
             {
                 c[++ci]=q->info;
                 v[q->info]=1;
                 dist[ci]=dist[cs]+1;
                 vv[q->info]=dist[ci];
             }
             q=q->urm;
         }
         cs++;
     }
     for(int i=1;i<=n;i++)
     {
         if(vv[i]==0)
         {
             if(i==k)
                fout<<0<<" ";
             else
                fout<<-1<<" ";
         }
         else
            fout<<vv[i]<<" ";
     }
    return 0;
}