Cod sursa(job #2553346)

Utilizator dogaru_roxanaDogaru Roxana dogaru_roxana Data 21 februarie 2020 21:26:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
#define f first
#define s second
using namespace std;

ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

vector <int> v[100005];
queue < pair <int, int> > q;

int n, m, s, viz[100005], nr[100005], x, y;

void BFS (int s)
{
    int i, zf, zs;

    q.push(make_pair(s, 0));
    viz[s]=1;
    nr[s]=0;

    while (q.size()!=0)
    {
        zf=q.front().f;
        zs=q.front().s;
        q.pop();

        for (i=0; i<v[zf].size(); i++)
        {
            if (viz[v[zf][i]]==0)
            {
                q.push(make_pair(v[zf][i], zs+1));
                viz[v[zf][i]]=1;
                nr[v[zf][i]]=zs+1;
            }
        }
    }
}
int main()
{
    int i;

    fin>>n>>m>>s;

    for (i=1; i<=m; i++)
    {
        fin>>x>>y;
        v[x].push_back(y);
    }

    for (i=1; i<=n; i++)
    {
        nr[i]=-1;
    }

    BFS(s);

    for (i=1; i<=n; i++)
        fout<<nr[i]<<" ";

    fin.close();
    fout.close();
    return 0;
}