Pagini recente » Cod sursa (job #2899390) | Cod sursa (job #1780118) | Cod sursa (job #597842) | Cod sursa (job #2954258) | Cod sursa (job #1801937)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n, m, s, c[100000], cost[100000];
bool v[100000];
vector <int> a[100000];
int main(){
int i, j, k, l, o;
fstream f;
f.open("bfs.in", ios_base::in);
f >> n >> m >> s; s--;
for (k=0; k<m; k++){
f >> i >> j;
i--; j--;
a[i].push_back(j);
}
f.close();
i=j=0; v[s]=true; cost[s]=0; c[0]=s;
while (i<=j){
l=c[i];
for (k=0; k<int(a[l].size()); k++){
o=a[c[i]][k];
if (v[o]==false){
j++;
c[j]=o;
cost[o]=cost[l]+1;
v[o]=true;
}
}
i++;
}
f.open("bfs.out", ios_base::out);
for (i=0; i<n; i++)
if (cost[i]==0 && i!=s)
f << "-1 ";
else if (cost[i]==0 && i==s)
f << "0 ";
else
f << cost[i] << ' ';
f << '\n';
f.close();
return 0;
}