Cod sursa(job #2075908)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 25 noiembrie 2017 20:29:53
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda dopaj_maxim Marime 1.14 kb
#include<stdio.h>
#include<vector>
#define MAXV 100000
void bfs();
FILE*fin,*fout;
std::vector<int> neighbors[MAXV+1];
int mindist[MAXV+1];
int coada[MAXV+1];
bool vizitat[MAXV+1];
int pr=0,ult=-1;
int V,E;
int main()
{
    fin=fopen("bfs.in","r");
    fout=fopen("bfs.out","w");
    int S;
    fscanf(fin,"%d%d%d",&V,&E,&S);
    for(int i=1;i<=E;i++)
    {
        int src,dst;
        fscanf(fin,"%d%d",&src,&dst);
        neighbors[src].push_back(dst);
    }
    vizitat[S]=1;
    coada[++ult]=S;
    bfs();
    for(int i=1;i<=V;i++)
    {
        if(!vizitat[i])
        {
            fprintf(fout,"-1 ");
        }
        else
        {
            fprintf(fout,"%d ",mindist[i]);
        }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}
void bfs()
{
    while(pr<=ult)
    {
        int nod=coada[pr];
        for(int i=0;i<neighbors[nod].size();i++)
        {
            int u=neighbors[nod][i];
            if(!vizitat[u])
            {
                vizitat[u]=1;
                mindist[u]=mindist[nod]+1;
                coada[++ult]=u;
            }
        }
        pr++;
    }
}