Cod sursa(job #1096519)

Utilizator patratzelAlex Alex patratzel Data 2 februarie 2014 11:16:24
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

unsigned n,m,s,a[10000][10000],i,c[10000],viz[10000],p,u;
int cst[10000];

void citeste()
    {
        unsigned x,y;
        fin>>n>>m>>s;
        for(i=1;i<=m;i++)
            {
                fin>>x>>y;
                a[x][y]=1;
            }
        fin.close();
    }

bool gasit(unsigned x)
    {
        for(unsigned q=1;q<=n;q++)
            if(c[i]==x)
                return true;
        return false;
    }

void parcurgere(unsigned x)
    {
        cst[x]=0;
        p=u=1;
        viz[x]=1;
        c[p]=x;
        while(p<=u)
            {
                for(i=1;i<=n;i++)
                if(a[c[p]][i]==1&&viz[i]==0)
                    {
                        u++;
                        c[u]=i;
                        viz[i]=1;
                        cst[i]=p;
                    }
                p++;
            }

    }

int main()
{
    citeste();
    for(i=1;i<=n;i++)
        cst[i]=-1;
    parcurgere(s);
   /* for(i=1;i<=n;i++)
        {   for(unsigned j=1;j<=n;j++)
              cout<<a[i][j]<<" ";
            cout<<"\n";
        }
    cout<<"\n";
    for(i=1;i<=n;i++)
            cout<<c[i]<<" ";
    cout<<"\n";*/
    for(i=1;i<=p;i++)
        fout<<cst[i]<<" ";
    fout.close();
    return 0;
}