Cod sursa(job #2530518)

Utilizator EltMenimTirisi Claudiu EltMenim Data 24 ianuarie 2020 21:36:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<vector>
#include<queue>
#include<list>
using namespace std;
ifstream f("bfs.in");
ofstream o("bfs.out");

int vf, m, s, x, y, i;
list<int>*Adj;

void init(){
Adj=new list<int>[vf];
}

void addEdge(){
Adj[x-1].push_back(y-1);
}

void bfs(){

list<int>::iterator j;
int dist[vf];
for(i=0;i<vf;i++) dist[i]=-1;

queue<int>q;
dist[s]=0;
q.push(s);

while(!q.empty()){
s=q.front();
q.pop();

for(j=Adj[s].begin();j!=Adj[s].end();j++){
if(dist[*j]==-1){
dist[*j]=dist[s]+1;
q.push(*j);
}
}

}

for(int i=0;i<vf;i++){
o<<dist[i]<<" ";
}

}

int main(){
f>>vf>>m>>s;

init();

for(i=0;i<m;i++){
f>>x>>y;
addEdge();
}

s--;
bfs();

}