Cod sursa(job #1348716)

Utilizator HaraldHarald Harald Data 19 februarie 2015 20:33:45
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <queue>

using namespace std;

int n,m,sursa,a[100][100],nod,viz[100],w[100];
queue<int> Q;

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

void afisare()
{
    freopen("bfs.out","w",stdout);
    for(int i=1;i<=n;i++)
        printf("%d ",w[i]);
    fclose(stdout);
}

void bfs(int s)
{
    Q.push(s);
    viz[s]=1;
    w[s]=0;
    while(!Q.empty())
    {
        nod=Q.front();
        Q.pop();
        for(int i=1;i<=n;i++)
            if(a[nod][i] && !viz[i])
            {
                viz[i]=1;
                Q.push(i);
                w[i]=w[nod]+1;
            }
    }
}

int main()
{
    citire();
    bfs(sursa);
    afisare();
}