Cod sursa(job #2853477)

Utilizator RobertDincaDinca Robert RobertDinca Data 20 februarie 2022 12:25:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
#include<queue>
#include <vector>
#include <stdio.h>
using namespace std ;

int n,m,s ;

vector<vector<int>>arce(100005,vector<int>());
int G[100005], S[100005], Cost[100005];


void citire()
{



    ifstream f("bfs.in");
    f >> n >> m >>s ;
    int x,y ;
    for(int i = 0 ; i < m ; i++)
        {
            f >> x >> y ;
            arce[x].push_back(y) ;
        }

    for(int i = 1 ; i <= n ; i++ )
        G[i] = arce[i].size() ;
    for(int i = 1 ; i <= n ; i++)
        {
            Cost[i] = -1 ;
        }

}


void BFS()
{
    int L=  1;
    S[L] = s ;
    Cost[s] = 0 ;

    for(int i = 1 ; i <= L ; i++)
            for(int j = 0 ; j < G[S[i]] ; j++)
                if(Cost[arce[S[i]][j]] == -1 )
                {
                     S[++L] = arce[S[i]][j] ;
                     Cost[S[L]] = Cost[S[i]] + 1;

                }

}


int main()
{
    ofstream g ("bfs.out");

    citire() ;
    BFS();

    for(int i = 1 ; i <= n ; i++)
        g << Cost[i] << "  " ;
    g.close();
    return 0 ;
}