Cod sursa(job #397370)

Utilizator aldulea_cristialdulea cristi aldulea_cristi Data 16 februarie 2010 20:37:19
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>

using namespace std;
int a[1001][1001],n,s,m,c[1001],li,ls,viz[1001];

void citire()
{
    freopen("bfs.in","r",stdin);
    scanf("%d %d %d",&n,&m,&s);
    for(int i=1;i<=m;i++)
        {
            int x,y;
            scanf("%d %d",&x,&y);
            a[x][y]=1;
        }
}

void bfs(int s)
{
    for(int i=1;i<=n;i++)
        viz[i]=-1;

    ls=1,li=1;
    c[li]=s;
    viz[s]=0;
    while(li<=ls)
       {
        for(int i=1;i<=n;i++)
            if((a[c[li]][i]==1)&&(viz[i]==-1))
                {
                    ls++;
                    c[ls]=i;
                    viz[i]=viz[c[li]]+1;
                }
            li++;
        }
}


int main()
{
    citire();
    bfs(s);
    freopen("bfs.out","w",stdout);
    for(int i=1;i<=n;i++)
        printf("%d ",viz[i]);
    return 0;
}