Cod sursa(job #1712915)

Utilizator ionalexandru98Alexandru Dumitru Ion ionalexandru98 Data 4 iunie 2016 09:51:01
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");
const int N=10001;
int n, m, S;
bool viz[N];
vector <int> a[N];

int pred[N], d[N], q[N];

void bfs (int x)
{
    int p,u,i;
    for(i=1;i<=n;i++)
        d[i]=-1;

    p=u=0;

    q[u++]=S;

    q[S]=0;

    while(p<u)
    {
        x=q[p++];
        for(i=0;i<a[x].size();i++)
        { int y=a[x][i];
            if(d[y] == -1)
            {
                q[u++]=y;
                d[y]=1+d[x];
                pred[y]=x;
            }
         }
    }
}
int main()
{
    int x,y,i;
    in>>n>>m>>S;
    for(i=1;i<=m;i++)
    {
        in>>x>>y;
        a[x].push_back(y);
    }

    bfs(S);

    for(i=1;i<=n;i++)
    out<<d[i]<<" ";
    return 0;
}