Cod sursa(job #1348780)

Utilizator HaraldHarald Harald Data 19 februarie 2015 20:58:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <queue>
#include <vector>
#define NMAX 100001

using namespace std;

int n,m,sursa,x,y,viz[NMAX];
vector<int> ad[NMAX];
queue<int> Q;

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

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

void bfs(int s)
{
    Q.push(s);
    viz[s]=1;
    while(!Q.empty())
    {
        x=Q.front();
        Q.pop();
        for(int i=0; i<ad[x].size(); ++i)
            if(!viz[ad[x][i]])
            {
                Q.push(ad[x][i]);
                viz[ad[x][i]]=viz[x]+1;
            }
    }
}

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