Cod sursa(job #753610)

Utilizator ghegoiu1Ghegoiu Stefan ghegoiu1 Data 30 mai 2012 09:07:24
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
vector <int> G[100000];
queue <int> Q;
int n,m,nod,x,y;
int lg[100000],sel[100000];
ifstream f("bfs.in");
ofstream g("bfs.out");
void bf(int x) {
    Q.push(x);sel[x]=1;lg[x]=0;
    while (!Q.empty())
        {
            int a=Q.front();
            int i;
            for ( i=0;i<G[a].size();++i)

                    if(sel[G[a][i]]==0) {
                        int r=G[a][i];
                        Q.push(r);
                        sel[r]=1;
                        lg[r]=lg[a]+1;
                }
            Q.pop();
}
}
int main()
{
    int i;
    f>>n>>m>>nod;
    for (i=1;i<=m;i++)
        {
            f>>x>>y;
            G[x].push_back(y);
        }
    for (i=1;i<=n;i++)
        lg[i]=-1;
    bf(nod);
    for (i=1;i<=n;i++)
        g<<lg[i]<<' ';
    return 0;
}