Pagini recente » Cod sursa (job #866738) | Cod sursa (job #2880453) | Cod sursa (job #2152757) | Cod sursa (job #3262689) | Cod sursa (job #390603)
Cod sursa(job #390603)
#include<stdio.h>
#include<vector>
using namespace std;
#define SIZE 100001
vector<int> graf[SIZE];
int n, m, s, x, y, l, cost[SIZE], coada[SIZE], nrvecini[SIZE];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d", &n, &m, &s);
int i, j;
for(i = 1; i <= m; i++)
{
scanf("%d %d", &x, &y);
graf[x].push_back(y);
}
fclose(stdin);
for(i = 1; i <= n; i++)
nrvecini[i] = graf[i].size();
//BFS algorithm
memset(cost, -1, sizeof(cost));
cost[s] = 0;
l = 1;
coada[l] = s;
for(i = 1; i <= l; i++)
for(j = 0; j < nrvecini[coada[i]]; j++)
if (cost[graf[coada[i]][j]] == -1)
{
coada[++l] = graf[coada[i]][j];
cost[coada[l]] = cost[coada[i]] + 1;
}
for(i = 1; i <= n; i++)
printf("%d ", cost[i]);
fclose(stdout);
return 0;
}