Cod sursa(job #1380089)

Utilizator supremAlex Imbrea suprem Data 6 martie 2015 21:50:55
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#define INF 1<<30
#define NMAX 100001

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");


vector< vector<int> > v(NMAX);
vector<bool> viz(NMAX, false);
vector<int>  codita(NMAX);
vector<int>  d(NMAX,-1);
void BFS(int x)
{
    int i, prim, ultim;
    int ca = -1;
    //cout<<x<<" ";
    d[x]=0;
    viz[x]=1;
    codita[0]=x; prim=ultim=0;
    while(prim<=ultim)
    {

        x=codita[prim++];
        d[x]=ca+1;
        for(int i=0; i<v[x].size(); ++i)
          {

           if(!viz[v[x][i]])
            {
               //cout<<v[x][i]<<" ";
                viz[v[x][i]]= true;
                codita[++ultim]=v[x][i];
                ca=d[x];

            }
        }
    }
}
int main()
{
    int x, y, s;
    int n,m;
    f>>n>>m>>s;

    while(f>>x>>y)
    {
        v[x].push_back(y);
    }


    BFS(s);

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