Cod sursa(job #2554180)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 22 februarie 2020 17:24:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int nmax = 100004;
vector<int>adj[nmax];
int n,s;
int dist[nmax];
inline void citire()
{
    int m;
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        adj[x].push_back(y);
    }
    for(int i=1;i<=n;i++) dist[i]=-1;
}
inline void bfs()
{
    queue<int>myq;
    dist[s] = 0;
    myq.push(s);
    while(!myq.empty())
    {
        int nod = myq.front();
        myq.pop();
        for(vector<int>::iterator it=adj[nod].begin();it!=adj[nod].end();++it)
        {
            if(dist[*it] == -1)
            {
                dist[*it] = dist[nod]+1;
                myq.push(*it);
            }
        }
    }
    for(int i=1;i<=n;i++) printf("%d ", dist[i]);
}
int main()
{
    freopen ("bfs.in","r",stdin);
    freopen ("bfs.out","w",stdout);
    citire();
    bfs();
    return 0;
}