Cod sursa(job #1505506)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 19 octombrie 2015 11:59:45
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
using namespace std;
vector <int> b[100001];
#define nmax 100001

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

int n,m,viz[nmax],S;


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

void citire()
{
    int i,x,y;
    fin>>n>>m>>S;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        //A[x][0]++;
        //A[x][A[x][0]]=y;
        b[x].push_back(y);
        //b[x].size() => lungimea b[x].
    }
}

int main()
{
    int i;
    citire();
    bfs(S);

    for(i=1;i<=n;i++)
        fout<<viz[i]-1<<' ';
    fout<<'\n';



    return 0;
}