Cod sursa(job #1823095)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 5 decembrie 2016 22:08:13
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <queue>
#define N 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue<int> coada;
int i,j,n,m,k,freq[N],el,viz[N],cost[N];
int** a;
void bfs(int x)
{
    viz[x]=1;
    cost[x]=0;
    coada.push(x);
    while(!coada.empty())
    {
        el=coada.front();
        coada.pop();
        for(i=1;i<=n;i++)
            if(a[el][i]==1 && viz[i]==0)
            {
                cost[i]=cost[el]+1;
                viz[i]=1;
                coada.push(i);
            }
    }
}
int main()
{
    int x1,y1;
    f>>n>>m>>k;
    a=new int*[n+5];
    for(i=1;i<=n;i++)
    {
        a[i]=new int[n+5];
    }
    for(i=1;i<=m;i++)
    {
        f>>x1>>y1;
        a[x1][y1]=1;
    }
    bfs(k);
    for(i=1;i<=n;i++)
    {
        if(cost[i]==0 && i!=k)
            g<<-1<<" ";
        else
            g<<cost[i]<<" ";
    }
}