Cod sursa(job #1723229)

Utilizator dominiciorgandaDominic Iorganda dominiciorganda Data 30 iunie 2016 03:17:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector<int>f[100001];
int k,i,m,x,j,ct;
queue<int>q;
bool g[100001];
int h[100001];
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&x,&m,&ct);
    for(k=1;k<=m;k++)
    {
        scanf("%d%d",&i,&j);
        f[i].push_back(j);
    }
    for(q.push(ct),g[ct]=1,h[ct]=0;!q.empty();q.pop())
    {
        i=q.front();
        for(k=0;k<f[i].size();k++)
        {
            if(g[f[i][k]]==0)
            {
                g[f[i][k]]=1;
                q.push(f[i][k]);
                h[f[i][k]]=h[i]+1;
            }
        }
    }
    for(k=1;k<=x;k++)
    {
        if(h[k]==0&&k!=ct)
            printf("-1 ");
        else
            printf("%d ",h[k]);
    }
    return 0;
}