Cod sursa(job #753613)

Utilizator Lokycatalin petre Loky Data 30 mai 2012 09:13:09
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>

using namespace std;

vector <int> G[100005];
long int i,j,n,m,x,y,nr,v[100005],s,coada[100005],inc,sf,sf1,k;

int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f>>n>>m>>s;

    for (i=1;i<=m;i++) {
        f>>x>>y;
        G[x].push_back(y);
    }

    nr=0;
    coada[1]=s;
    for (i=1;i<=n;i++)
    v[i]=-1;
    inc=1;sf=1;sf1=1;
    while (inc<=sf) {
        nr++;
        for (i=inc;i<=sf;i++)
        k=coada[i];
        for (j=0;j<G[k].size();j++)
        if (v[G[k][j]]==-1 &&k!=G[k][j]) {
            v[G[k][j]]=nr;
            sf1++;
            coada[sf1]=G[k][j];
        }
        inc=sf+1;
        sf=sf1;
    }

    for (i=1;i<=n;i++) {
    if (i==s) g<<'0'<<' ';
    else
    g<<v[i]<<' ';
    }

    f.close();
    g.close();
    return 0;
}