Cod sursa(job #1836210)

Utilizator jurjstyleJurj Andrei jurjstyle Data 27 decembrie 2016 23:08:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int maxN = 100001;

int n,m,s,d[maxN];
vector<int> a[maxN];
bool viz[maxN];

void bfs(int x){
    queue<int> q;
    viz[x]=1;
    q.push(x);
    while(!q.empty()){
        x=q.front();
        for(int i=0;i<a[x].size();i++){
            int y=a[x][i];
            if(!viz[y]){
                viz[y]=1;
                d[y]=d[x]+1;
                q.push(y);
            }
        }
        q.pop();
    }
}

int main()
{
    fin>>n>>m>>s;
    int i,j,k;
    for(i=1;i<=m;i++){
        fin>>j>>k;
        a[j].push_back(k);
    }
    bfs(s);
    for(i=1;i<=n;i++)
        if(d[i]!=0 || i==s)
            fout<<d[i]<<" ";
        else
            fout<<"-1"<<" ";
    return 0;
}