Cod sursa(job #2790920)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 29 octombrie 2021 19:33:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include  <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector< vector <int>> edges;
vector <int> dist;
queue <int> q;
int n,m,root;
void readgraph()
{
    cin>>n>>m>>root;
    edges.resize(n);
    dist.resize(n,-1);
    for(int i=0;i<m;i++)
    {
        int a,b;
        cin>>a>>b;
        a--;
        b--;
        edges[a].push_back(b);
    }
}
//void dfs(int node)
//{
//    viz[node]=1;
//    for(auto next: edges[node])
//        if(!viz[next])
//        dfs(next);
//}
void bfs(int root)
{
    q.push(root);
    dist[root]=0;
    while(!q.empty())
    {
        int i=q.front();
        for(auto next : edges[i])
            if(dist[next]==-1)
            {
                dist[next]=dist[i]+1;
                q.push(next);
            }
        q.pop();
    }
}
int main()
{
    readgraph();
    bfs(root-1);
    for(int i=0;i<edges.size();i++)
        cout<<dist[i]<<" ";
    return 0;
}