Cod sursa(job #1802362)

Utilizator Robert_VRVRobert Vadastreanu Robert_VRV Data 10 noiembrie 2016 10:27:36
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,g,c[100001],d[100001],p,u;
bool a[10001][10001],v[100001];
void latime(int r)
{
    int i,k;
    p=u=1;
    c[p]=r;
    d[r]=0;
    v[r]=1;
    while(p<=u)
    {
        k=c[p];
        for(i=1;i<=n;i++)
            if(v[i]==0 && a[k][i]==1)
            {
                u++;
                c[u]=i;
                d[i]=d[c[p]]+1;
                v[i]=1;
            }
        p++;
    }
}
int main()
{
    fin>>n>>m>>g;
    int i,x1,x2,j;
    for(i=1;i<=n;i++)
        d[i]=-1;
    for(i=1;i<=m;i++)
    {
        fin>>x1>>x2;
        a[x1][x2]=1;
        if(x1==x2)
            a[x1][x2]=0;
    }
    latime(g);
    for(i=1;i<=n;i++)
        fout<<d[i]<<" ";
    return 0;
}