Cod sursa(job #2194737)

Utilizator SmitOanea Smit Andrei Smit Data 14 aprilie 2018 11:51:42
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <iostream>

using namespace std;

int n,m,S;
int d[1003],q[1003],pr,ul;
bool a[1003][1003];

void BFS(int start)
{
    int i,x;

    ul=pr=0;
    q[0]=start;
    d[start] = 0;
    //cout<<start<<"\n";
    while(pr<=ul)
    {
        x=q[pr];
        pr++;
        for(i=1;i<=n;++i)
            if(a[x][i]==true)
                if(d[i]==-1 || d[i] > d[x]+1)
                {
                    d[i] = d[x] + 1;
                    q[++ul] = i;
                }
    }
}

int main()
{
    int i,x,y;
    ifstream fin("bfs.in");
    fin>>n>>m>>S;
    for(i=1;i<=m;++i)
    {
        fin>>x>>y;
        a[x][y]=true;
    }
    fin.close();

    for(i=1;i<=n;++i)
        d[i]=-1;
    BFS(S);
    ofstream fout("bfs.out");
    for(i=1;i<=n;++i)
        fout<<d[i]<<" ";
    fout.close();
    return 0;
}