Cod sursa(job #2628980)

Utilizator CornelProgramatorMarin Florin Eduard Marian CornelProgramator Data 18 iunie 2020 14:28:16
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb

#include <iostream>
#include <fstream>
using namespace std;

long long int gasit,vizitat[100001], c[100001],nr, a[10000][10000], N,M,S,x,y,prim,ultim,k;
int main()
{

ifstream f("bfs.in");
ofstream g("bfs.out");
//citire N M S
    f>>N>>M>>S;

    //transcriere muchie in matricea de adiacenta
    for(int i=1; i<=M; i++)
    {
        f>>x>>y;
       a[x][y]=1;

    }
  //Initializare coada cu primul element, nodul S;
    prim=ultim=1;
    c[prim]=S;
    vizitat[S]=0;
 //parcurgerea in latime a grafului
while(prim<=ultim)
{      //contorul care numara lungimea drumului pt fiecare nod


    k=c[prim];
    for(int i=1; i<=N;i++)
        {  if((a[k][i]==1) &&(vizitat[i]==0))
        {    if(i==S)
            vizitat[i]=0;
        else
            {ultim++;
             c[ultim]=i;
            vizitat[i]=vizitat[k]+1;


            } //in vectorul vizitat se trece lungimea fiecarui drum de la S-I
        }

        }


    prim++;
}

for(int i=1; i<=N; i++)
    if((vizitat[i]==0) &&(i!=S))
    {
        vizitat[i]=-1;
        g<<vizitat[i]<<" ";
    }
    else g<<vizitat[i]<<" ";
    g<<endl;


    return 0;
}