Pagini recente » Cod sursa (job #1347491) | Cod sursa (job #2360886) | Cod sursa (job #2782757) | Cod sursa (job #2782735) | Cod sursa (job #3249351)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
queue <int> Q;
vector<vector<int>> generare_lista_adiacenta(int varfuri, int muchii, int tip){
vector<vector<int>> lista(varfuri);
int x,y;
for(int i=0; i<muchii; i++){
fin>>x>>y;
lista[x-1].push_back(y);
if(tip==0)
lista[y-1].push_back(x);
}
return lista;
}
int main()
{
int n,m,S;
fin>>n>>m>>S;
vector<vector<int>> lista_adiacenta = generare_lista_adiacenta(n,m, 1);
int dist[n]={0}, viz[n]={0};
dist[S-1]=1, viz[S-1]=1;
Q.push(S);
while(!Q.empty()){
int nod=Q.front();
Q.pop();
for(auto vecin: lista_adiacenta[nod-1]){
if(!viz[vecin-1]){
Q.push(vecin);
dist[vecin-1]=dist[nod-1]+1;
viz[vecin-1]=1;
}
}
}
for(int i=0; i<n; i++){
fout<<dist[i]-1<<" ";
}
return 0;
}