Cod sursa(job #1110473)

Utilizator vladteodor97Cirstina Vlad vladteodor97 Data 18 februarie 2014 09:18:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
using namespace std;
struct nod
{
    int v;
    nod *urm;
};

void citire(int &n , nod*LA[],int&S)
{
    fstream fin ;
    int m,i,vf1,vf2;
    nod*p;
    fin.open("bfs.in",ios::in);
    fin>>n>>m>>S;
    for(i=1;i<=m;i++)
    {
        fin>>vf1>>vf2;
        p=new nod;
        p->v=vf2;
        p->urm=LA[vf1];
        LA[vf1]=p;
    }
    fin.close();
}

void bfs (int S,int n, nod* LA[])
{
    int coada[100002],pr,ul,viz[100002],i;
    nod*p;
    for(i=1;i<=n;i++)
    {viz[i]=-1;}
    viz[S]=0;
    coada[1]=S;
    pr=1;
    ul=1;
    while(pr<=ul)
    {
        i=coada[pr];
        for(p=LA[i];p!=0;p=p->urm)
        {
            if(viz[p->v]==-1)
            {
                ul++;
                coada[ul]=p->v;
                viz[p->v]=1+viz[i];
            }
        }
        pr++;
    }
    fstream fout;
    fstream("bfs.out",ios::out);
    for(i=1;i<=n;i++)
    {
        fout<<viz[i]<<" ";
    }
    fout.close();
}
nod*LA[100002];
int n,S;
int main()
{
    citire(n,LA,S);
    bfs(S,n,LA);
    return 0;
}