Pagini recente » Cod sursa (job #2569590) | Cod sursa (job #1387299) | Cod sursa (job #2055131) | Cod sursa (job #2296405) | Cod sursa (job #2784686)
#include <queue>
#include<fstream>
using namespace std;
int d[100000],n,m,s,viz[100000];
vector<int> l[100000];
void citire(const char *nume_fisier, int &n, int &m, int &s, vector<int> l[100000]){
ifstream f(nume_fisier);
int x,y,i;
f>>n>>m>>s;
s--;
for(i=0;i<m;i++){
f>>x>>y;
l[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[x].size();i++){
int y=l[x][i];
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);
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;
}