Cod sursa(job #1095992)

Utilizator patratzelAlex Alex patratzel Data 1 februarie 2014 13:15:40
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#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;

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;
    }

int parcurgere(unsigned x,unsigned y)
    {
        if(x==y)
            return 0;
        else
            {
                unsigned cost=1;
                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;
                                if(i==y)
                                    return cost;
                            }
                        p++;
                        cost++;
                    }
                if(gasit(y))
                    return -1;
            }
    }

main()
{
    citeste();
    for(unsigned z=1;z<=n;z++)
        {
            fout<<parcurgere(s,z)<<" ";
            for(unsigned j=1;j<=u;j++)
                viz[j]=0;
        }
    fout.close();

}