Cod sursa(job #1979569)

Utilizator ioan32Ioan Eftenoiu ioan32 Data 10 mai 2017 20:55:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int start[100001], t[2][1000001], coada[100001], ic, sfc, viz[100001], d[100001];
int n, m;

int main()
{int i, j, x, y, k = 0, s;

    f>>n>>m>>s;

    for(i = 1; i <= m; i++)
    {
        f>>x>>y;

        if(x!=y){
        k ++;
        t[0][k] = y;
        t[1][k] = start[x];
        start[x] = k;}
    }



    int man = start[2];


    ic = sfc = 1;

    coada[1] = s;
    viz[s] = 1;

    while(ic <= sfc)
    {

        int man = start[coada[ic]];

        while(man)
        {
            if(viz[t[0][man]]==0){

                sfc ++;

                coada[sfc] = t[0][man];
                viz[t[0][man]] = 1;
                d[t[0][man]] = d[coada[ic]] + 1;
            }

            man = t[1][man];
        }


        ic++;
    }



    for(i = 1; i<= n; i++)
        if(viz[i])g<<d[i]<<" ";
          else
            g<<-1<<" ";

    return 0;
}