Cod sursa(job #2365733)

Utilizator BovisioNitica Ionut Bogdan Bovisio Data 4 martie 2019 16:03:34
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

int n,m,s;
int viz[10000],dist[10000];
vector <int> Graf[10000];
queue <int> Qu;

void Read()
{
    int aux1,aux2;
    FILE *f = fopen("bfs.in","r");
    fscanf(f,"%d %d %d",&n,&m,&s);
    for(int i=0;i<m;i++)
    {
        fscanf(f,"%d %d",&aux1,&aux2);
        Graf[aux1].push_back(aux2);
    }
}

void BFS(int node)
{
    dist[node] = 0;
    Qu.push(node);
    while(Qu.empty() == NULL)
    {
        node = Qu.front();
        viz[node] = 1;
        Qu.pop();
        for(int i=0;i<Graf[node].size();i++)
        {
            int nn = Graf[node][i];
            if(viz[nn] == 0)
            {
                Qu.push(nn);
                dist[nn] = dist[node] + 1;
            }
        }
    }

}

int main()
{
    FILE *g = fopen("bfs.out","w");
    Read();
    BFS(s);
    for(int i=1;i<=n;i++)
    {
        if(viz[i] != 0)
            fprintf(g,"%d ",dist[i]);
        else
            fprintf(g,"-1 ");
    }
    return 0;
}