Cod sursa(job #899437)

Utilizator ctraulChicinas T. Raul ctraul Data 28 februarie 2013 14:25:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
using namespace std;
#include <stdio.h>
#include <vector>
#include <list>
vector <int> lis[100001];
list <int> coada;
void BFS(int nod);
int n, m, freq[100001], start;
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d", &n, &m, &start);
    for(int i=1, S, E; i<=m; i++)
    {
        scanf("%d%d", &S, &E);
        lis[S].push_back(E);
    }
    BFS(start);
    for(int i=1;i<=n;i++)
        printf("%d ",freq[i]-1);
    printf("\n");
}

void BFS(int nod)
{
    list <int>::iterator j;
    coada.push_back(nod);
    freq[nod]=1;
    for(j=coada.begin(); j!=coada.end(); j++)
    {
        for(int i=0; i<lis[*j].size(); i++)
            if(freq[lis[*j][i]]==0)
            {
                freq[lis[*j][i]]=freq[*j]+1;
                coada.push_back(lis[*j][i]);
            }
    }
}