Cod sursa(job #894354)

Utilizator alin_iliciAlin Ilici alin_ilici Data 26 februarie 2013 20:49:35
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <vector>
using namespace std;

#define max 100001
vector <int> vec[max];
int coada[max], cost[max];

void BFS(int nod, int n)
{
    unsigned int i,j,k;
    k=1;
    cost[nod]=0;
    coada[k]=nod;
    for (i=1;i<=k;i++)
        for (j=0;j<vec[coada[i]].size();j++)
            if (cost[vec[coada[i]][j]] == -1)
            {
                k=k+1;
                coada[k] = vec[coada[i]][j];
                cost[coada[k]] = cost[coada[i]] + 1;
            }
}

int main()
{
    int i,a,b,s,m,n;
    FILE *f,*g;
    f=fopen ("bfs.in", "rt");
    g=fopen ("bfs.out", "wt");
    fscanf (f,"%d %d %d", &n, &m, &s);
    for (i=1;i<=m;i++)
    {
        fscanf (f,"%d %d", &a, &b);
        vec[a].push_back(b);
        vec[b].push_back(a);
    }
    
    for (i=1;i<=n;i++)
        cost[i]=-1;

    for (i=s;i<=n;i++)
    {
        if (cost[i]==-1)
        {
            BFS(s,n);
        }
    }

    for (i=1;i<=n;i++)
        fprintf (g, "%d ", cost[i]);

    fclose(f);
    fclose(g);
    return 0;
}