Cod sursa(job #2221196)

Utilizator danielsociuSociu Daniel danielsociu Data 13 iulie 2018 13:58:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <vector>
std::ifstream cin("bfs.in");
std::ofstream cout("bfs.out");
#define maxn 100010
typedef std::vector<int>::iterator iter;
std::vector <int> g[maxn];
int viz[maxn],n,m,x;

void bfs(int x){
    int p,u,c[maxn];
    p=u=1;
    c[1]=x;
    viz[x]=0;
    while(p<=u){
        x=c[p++];
        for(iter it=g[x].begin();it!=g[x].end();it++)
            if(viz[*it]==-1){
                c[++u]=*it;
                viz[*it]=viz[x]+1;
            }
    }
}

int main()
{
    int y,z;
    cin>>n>>m>>x;
    for(int i=1;i<=n;i++)
        viz[i]=-1;
    while(cin>>y>>z)
        g[y].push_back(z);
    bfs(x);
    for(int i=1;i<=n;i++)
        cout<<viz[i]<<" ";
    return 0;
}