Cod sursa(job #798358)

Utilizator ghegoiu1Ghegoiu Stefan ghegoiu1 Data 16 octombrie 2012 14:58:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
vector <int> G[100010];
vector <int> :: iterator it;
queue <int> Q;
int T[100010],L[100010];
bool sel[100010];
ifstream f("bfs.in");
ofstream g("bfs.out");
void bf(int x)
{
    Q.push(x);sel[x]=true;T[x]=0;L[x]=0;
    while (!Q.empty())
    {
        int nod=Q.front();
        for (it=G[nod].begin();it!=G[nod].end();it++)
            if (!sel[*it])
            {
                Q.push(*it);
                T[*it]=nod;
                sel[*it]=true;
                L[*it]=L[nod]+1;
            }
        Q.pop();
    }
}

int main()
{
    int m,i,x,y,n,nod;
    f>>n>>m>>nod;
    for (i=1;i<=m;i++)
    {
        f>>x>>y;
        G[x].push_back(y);
    }
    for (i=1;i<=n;i++)
        L[i]=-1;
    bf(nod);
    for (i=1;i<=n;i++)
        g<<L[i]<<' ';
    return 0;
}