Pagini recente » Cod sursa (job #645486) | Cod sursa (job #1910758) | Cod sursa (job #1061402) | Cod sursa (job #1100203) | Cod sursa (job #399753)
Cod sursa(job #399753)
#include <fstream>
#include <bitset>
#include <vector>
using namespace std;
const int NMAX = 100001;
typedef int el_t;
int main()
{
bitset<NMAX> visited;
int N, S, m, r = 0, l = 0;
el_t q[NMAX];
el_t path[NMAX];
vector<el_t> G[NMAX];
ifstream f1("bfs.in");
f1 >> N >> m >> S;
do { int a, b; f1 >> a >> b; G[a].push_back(b); } while(--m);
q[r++] = S;
path[S] = 1;
while(r != l) {
int c;
vector<el_t>::iterator it;
visited.set(c = q[l++]);
for (it = G[c].begin(); it != G[c].end(); ++it)
if (!visited[*it]) path[q[r++] = *it] = path[c] + 1;
}
freopen("bfs.out", "w", stdout);
for (int i = 1; i <= N; ++i)
printf("%d ", path[i] - 1);
printf("\n");
return 0;
}