Cod sursa(job #592560)

Utilizator mihai995mihai995 mihai995 Data 28 mai 2011 23:23:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <vector>
using namespace std;

const int N=100003;
int v[N],c[N],n;
vector<int> a[N];

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

void bfs(int x)
{
    int p=0;
    v[x]=0;
    c[++c[0]]=x;
    while (p<c[0])
    {
        x=c[++p];
        for (vector<int>::iterator i=a[x].begin();i!=a[x].end();i++)
            if (v[*i]==-1)
            {
                c[++c[0]]=*i;
                v[*i]=v[x]+1;
            }
    }
}

int main()
{
    int m,S,i,x,y;
    in>>n>>m>>S;
    while (m--)
    {
        in>>x>>y;
        a[x].push_back(y);
    }
    for (i=1;i<=n;i++)
        v[i]=-1;
    bfs(S);
    for (i=1;i<=n;i++)
        out<<v[i]<<" ";
    out<<"\n";
    return 0;
}