Cod sursa(job #2549742)

Utilizator Andrei012Trache Andrei Andrei012 Data 17 februarie 2020 22:45:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>

using namespace std;

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

struct ura{
    int cost,parc;
};
int q[100001];
vector<int> v[100001];
ura d[100001];

void bfs(int a){
    int i,to,from,nod,x;
    q[1]=a;
    from=to=1;
    while(from<=to){
        x=q[from];
        for(i=0;i<v[x].size();i++){
            nod=v[x][i];
            if(d[nod].parc==0){
                d[nod].cost=d[x].cost+1;
                d[nod].parc=1;
                q[++to]=nod;
            }
        }
        ++from;
    }
}

int main()
{
    int n,m,nod,i,x,y;
    cin>>n>>m>>nod;
    for(i=1;i<=m;i++){
        cin>>x>>y;
        if(x!=y)
            v[x].push_back(y);
    }
    for(i=1;i<=n;i++)
        d[i].cost=-1;
    d[nod].cost=0;
    d[nod].parc=1;
    bfs(nod);
    for(i=1;i<=n;i++)
        cout<<d[i].cost<<" ";
    return 0;
}