Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 9 si 8 | Cod sursa (job #1285896) | Cod sursa (job #1348838) | Cod sursa (job #1374658) | Cod sursa (job #1289351)
#include <fstream>
#include <vector>
#include <algorithm>>
#define DIM 100010
using namespace std;
vector<int> L[DIM];
int v[DIM], n, m, x, y, i, cc, c[DIM], s;
ifstream f("bfs.in");
ofstream g("bfs.out");
void bfs(int nod) {
int p = 1;
int u = 1;
c[1] = s;
v[s] = 1;
while (p<=u) {
// iau vecinii nevizitati ai primului element
int nod = c[p];
for (i=0;i<L[nod].size();i++)
if (v[ L[nod][i] ] == 0) {
u++;
c[u] = L[nod][i];
v[ L[nod][i] ] = 1 + v[nod];
}
p++;
}
}
int main() {
f>>n>>m>>s;
for (i=1;i<=m;i++){
f>>x>>y;
L[x].push_back(y);
}
bfs(s);
for (i=1;i<=n;i++)
g<<v[i]-1<<" ";
return 0;
}