Cod sursa(job #1808968)

Utilizator alexionpopescuPopescu Ion Alexandru alexionpopescu Data 18 noiembrie 2016 15:10:53
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,a[1001][1001],c[1001],d[1001];
bool v[1001];
void cit(){
    int i,j,h;
    fin>>n>>m>>s;
    for(h=1;h<=m;h++){
        fin>>i>>j;
        a[i][j]=1;
    }
    fin.close();
}
void bfs(int x){
    int p,u,i;
    p=u=1;
    v[x]=1;
    c[1]=x;
    while(p<=u){
        x=c[p];
        for(i=1;i<=n;i++){
            if(v[i]==0 && a[x][i]==1){
                c[++u]=i;
                d[i]=d[x]+1;
                v[i]=1;
            }
        }
        p++;
    }
}
int main(){
    int i;
    cit();
    bfs(s);
    for(i=1;i<=n;i++)
        if(i==s)
            fout<<0<<" ";
        else{
            if(d[i]==0)
                fout<<-1<<" ";
            else
                fout<<d[i]<<" ";
        }
    fout.close();
    return 0;
}