Cod sursa(job #1542754)

Utilizator PaulCbnCiobanu Paul PaulCbn Data 5 decembrie 2015 17:09:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

vector <int> lv[100010];
vector <int>::iterator ii;

queue <int> q;

int length[100010];
int used[100010];

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int a,b,n,m,S;
    scanf("%d%d%d",&n,&m,&S);
    for(int i=1;i<=m;i++)
    {
       scanf("%d%d",&a,&b);
       lv[a].push_back(b);
    }

    q.push(S);
    used[S]=1;
    length[S]=1;
    int cost = 0;

    while(!q.empty())
    {

        int cnt = q.front();
        q.pop();

        for(ii=lv[cnt].begin();ii!=lv[cnt].end();++ii)
            if(!used[*ii])
            {
                length[*ii]=length[cnt]+1;
                q.push(*ii);
                used[*ii]=1;
            }


    }

    for(int i=1;i<=n;i++)
        printf("%d ",length[i]-1);

    return 0;
}