Cod sursa(job #1807488)

Utilizator DiiiiiiiiiiaDiana Georgescu Diiiiiiiiiia Data 16 noiembrie 2016 17:39:10
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
//Fiind dat un nod S, sa se determine, pentru fiecare nod X,
//numarul minim de arce ce trebuie parcurse pentru a ajunge din nodul sursa S la nodul X.
//Fisierul de intrare bfs.in contine pe prima linie 3 numere intregi N M S, cu semnificatia din enunt
//. Urmatoarele M linii contin cate doua numere x y, cu semnificatia ca exista arc orientat de la x la y.
struct arc
{
    int x,y;
} a[100];
int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int s,n,m,i,c[100],viz[100]= {0},inc=1,sf=0,nr=0;
    fin >> n >> m >> s;
    for(i=1; i<=m; i++)
        fin >> a[i].x >> a[i].y;
    c[++sf]=s;
    viz[s]=nr;
    while(inc<=sf)
    {
        for(i=1; i<=n; i++)
        {
            if(c[inc]==a[i].x&&viz[a[i].y]==0)
            {
                c[++sf]=a[i].y;
                viz[a[i].y]=nr;
                nr++;
            }
        }
        inc++;
    }
    for(i=1;i<=n;i++)
    {
        if(viz[i]==0)
            fout << "-1" << " ";
        else
            fout << viz[i] << " ";
    }



    fin.close();
    fout.close();
    return 0;
}