Cod sursa(job #2305190)

Utilizator SahMatCodrea Andrei SahMat Data 19 decembrie 2018 16:06:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

#define NMAX 100001

using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");

int n,m,s;
int d[100001];
vector<int> v[NMAX];
queue <int> q;

int main()
{
    fi>>n>>m>>s;

    int l,c;

    for(int i=1;i<=m;i++)
    {
        fi>>l>>c; // citim elem vecine
        v[l].push_back(c);
    }

    for(int i=1;i<=n;i++)
        d[i]=-1;

    int nc;
    q.push(s);// punem primul element in coada
    d[s]=0;

    while(!q.empty())
    {
        nc=q.front();
        for(int i=0; i<v[nc].size();i++)
        {
            int vecin=v[nc][i];
            if(d[vecin]==-1)//nevizitat
                {
                    d[vecin]=d[nc]+1;
                    q.push(vecin);
                }
        }
        q.pop();

    }

    for(int i=1;i<=n;i++)
        fo<<d[i]<<" ";

    return 0;
}