Cod sursa(job #1505498)

Utilizator Horia69Moisoiu Horia Horia69 Data 19 octombrie 2015 11:53:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> b[100001];
int c[100001], n, viz[100001];


void bfs(int x)
{
    int z, j, w, p, u;
    c[1]=x;
    p=u=1;
    viz[x]=1;
    while ( p <= u )
    {
        z=c[p];
        p++;
        for ( j=0; j<b[z].size(); j++ )
        {
            w=b[z][j];
            if ( !viz[w] )
            {
                u++;
                c[u]=w;
                viz[w]=viz[z]+1;
            }
        }
    }
}

int main()
{
    int i, x, y, s, m;
    fin >> n >> m >> s;
    for ( i=1; i<=m; i++ )
    {
        fin >> x >> y;
        b[x].push_back(y);
    }
    bfs(s);
    for ( i=1; i<=n; i++ )
        fout << viz[i]-1 << " ";
}