Cod sursa(job #3365004)

Utilizator iulia_toderica16Iulia Toderica iulia_toderica16 Data 15 septembrie 2026 16:34:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

vector<int> graf[100001];
bool vizitat[100001];

void dfs(int k)
{
  	vizitat[k] = true;
    cout<<k<<' '; //facem ceva op

  	for (int vecin : graf[k]){
      	if (!vizitat[vecin]){
          	dfs(vecin);
        }
    }
}

int rang[100001];

void bfs(int start)
{
    queue<int> q;

    q.push(start);
    vizitat[start] = true;
    while(!q.empty()){
        int nod = q.front();
        for (int vecin : graf[nod]){
            if (!vizitat[vecin]){
                //cout<<vecin;//operatii
                vizitat[vecin] = true;
                rang[vecin] = rang[nod] + 1;
                q.push(vecin);
            }
        }
        q.pop();
    }
}

int main()
{
	int v, e;//vertices, edge
  	ifstream fin("bfs.in");
  	ofstream fout("bfs.out");
  	int start;
  	fin>>v>>e>>start;
  	int a,b;
  	for(int i=0; i<e; ++i){
      	fin>>a>>b;
      	graf[a].push_back(b);
      	//graf[b].push_back(a);
    }
  	bfs(start);
    for (int i=1; i<=v; ++i){
        /*
        if (rang[i]==0 && i!=start)
            cout<<"-1 ";
        else cout<<rang[i]<<' ';
        */
        if (vizitat[i]==false)
            fout<<"-1 ";
        else fout<<rang[i]<<' ';
    }
}