Cod sursa(job #2324662)

Utilizator ceciliamariciucCecilia Mariciuc ceciliamariciuc Data 21 ianuarie 2019 12:07:30
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <queue>
#include <vector>
#define nmax 100001

using namespace std;

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

int n,m,s;
bool viz[nmax];
int l[nmax];
vector <int> V[nmax];

void Citire()
{int i,x,y;
fin>>n>>m>>s;
for(i=1;i<=m;i++)
    {fin>>x>>y;
     V[x].push_back(y);
    }
}


void BFS(int p)
{queue <int> C;
int v,i;
vector <int>::iterator it;
int viz[101]={0};
C.push(p); viz[p]=1;

l[p]=1;
while(!C.empty())
   {v=C.front(); C.pop();
    for(it=V[v].begin();it!=V[v].end();it++)
        if(!viz[*it])
           {C.push(*it); viz[*it]=1;
            l[*it]=l[v]+1;
           }
   }
}


int main()
{int c,k=0,i;
vector <int>::iterator it;
Citire();
BFS(s);
for(i=1;i<=n;i++)
    if(l[i]==0) fout<<"-1"<<" ";
    else fout<<l[i]-1<<" ";
/*
for(i=1;i<=n;i++)
   {for(it=V2[i].begin();it!=V2[i].end();it++)
        fprintf(g,"%d ",*it);
    fprintf(g,"\n");
   }*/
    return 0;
}