Cod sursa(job #2755760)

Utilizator anne_marieMessner Anne anne_marie Data 28 mai 2021 02:25:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <vector>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");

using namespace std;

vector< int > grf[100005];

int coada[100005];
int viz[100005];
int dist[100005];
int rez[100005];

int n, m, s, a, b;

int main()
{
    fin >> n >> m >> s;
    
    for(int i = 1; i <= m; i ++)
    {
        fin >> a >> b;
        grf[a].push_back(b);
    }

    coada[1] = s;

    int it = 0;
    int k = 1;
    viz[s] = 1;
    dist[s] = 0;

    while(it != k)
    {
        it ++;
        for(int  i = 0; i < grf[coada[it]].size(); i ++)
            if(viz[grf[coada[it]][i]] == 0)
            {
                coada[++k] = grf[coada[it]][i];
                viz[grf[coada[it]][i]] = 1;
                dist[k] = dist[it] + 1;
                rez[coada[k]] = dist[k];
            }
    }
    
    for(int i = 1; i <= n; i ++)
        if(viz[i] == 0)
            fout << -1 << " ";
        else
        {
            fout << rez[i] << " ";
        }
        
    
    return 0;
}