Pagini recente » Cod sursa (job #3345913) | Cod sursa (job #1292239) | Cod sursa (job #134883) | Cod sursa (job #803631) | Cod sursa (job #3316745)
#include <queue>
#include<fstream>
using namespace std;
const int NMAX = 1e5;
int d[NMAX],n,m,s,viz[NMAX];
vector<int> l_ad[NMAX];
void citire(const char *nume_fisier, int &n, int &m, int &s, vector<int> l_ad[NMAX]){
ifstream f(nume_fisier);
int x,y,i;
f>>n>>m>>s;
s--;
for(i=0;i<m;i++){
f>>x>>y;
l_ad[x-1].push_back(y-1);
}
f.close();
}
void bfs(int s){
int x,i;
queue<int> c;
c.push(s);
d[s]=0;
viz[s]=1;
while(c.size()>0){
x=c.front();
c.pop();
//for(i=0;i<l_ad[x].size();i++){
// int y=l_ad[x][i];
for(auto y:l_ad[x]){
if(viz[y]==0){
c.push( y);
viz[y]=1;
d[y]=d[x]+1;
}
}
}
}
int main(){
int n,m,s,i;
citire("bfs.in",n,m,s,l_ad);
for(i=0;i<n;i++)
d[i]=-1;
bfs(s);
ofstream f("bfs.out");
for(i=0;i<n;i++)
f<<d[i]<<" ";
f.close();
return 0;
}