Cod sursa(job #1823081)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 5 decembrie 2016 21:50:11
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 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];
int** a;
void bfs(int x)
{
    viz[x]=1;
    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)
            {
                freq[i]++;
                viz[i]=1;
                coada.push(i);
            }
            else
                if(el==x && a[el][i]==0)
                {
                    freq[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);
    freq[k]=0;
    for(i=1;i<=n;i++)
        {
            if(viz[i]==0)
                g<<-1<<" ";
            else
                g<<freq[i]<<" ";
        }
}