Pagini recente » Cod sursa (job #3316913) | Cod sursa (job #3359247) | Cod sursa (job #2663010) | Cod sursa (job #1966155) | Cod sursa (job #3314610)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
void bfs(int i,std::vector<bool>viz,std::vector<std::vector<int>> lista,std::vector<int> &dis,int &nr){
if(viz[i]==true){
return;
}
viz[i]=true;
int ok=0;
for(int j=0;j<lista[i].size();j++){
if(viz[lista[i][j]]==false)
{dis[lista[i][j]]=nr;
ok=1;}
}
if(ok==1){
nr++;
}
for(int j=0;j<lista[i].size();j++){
bfs(lista[i][j],viz,lista,dis,nr);
}
}
int main(){
int n,m,s,x,y,nr=1;
fin>>n>>m>>s;
std::vector<std::vector<int>> lista(n+1);
std::vector<bool>viz(n+1);
std::vector<int> dis(n+1);
// for(int i=1;i<=n;i++){
// viz[i]=false;
// }
while(m){
fin>>x>>y;
if(x!=y){
lista[x].push_back(y);
}
m--;
}
bfs(s,viz,lista,dis,nr);
for(int i=1;i<=n;i++){
if(i!=s && dis[i]==0)
dis[i]=-1;
std::cout<<dis[i]<<" ";
}
// for(int i=1;i<=n;i++){
// std::cout<<i<<" ";
// for(int j=0;j<lista[i].size();j++)
// {
// std::cout<<lista[i][j]<<" ";
// }
// std::cout<<"\n";
// }
}