Pagini recente » Cod sursa (job #2641014) | Cod sursa (job #2692643) | Cod sursa (job #2067965) | Cod sursa (job #888833) | Cod sursa (job #914110)
Cod sursa(job #914110)
#include <cstdio>
#include <vector>
#include <queue>
#define NMAX 100001
using namespace std;
vector < int > G[NMAX];
queue < int> Q;
int n;
int s;
int d[NMAX];
void read()
{
int m;
int x;
int y;
freopen("bfs.in", "r", stdin);
scanf("%d %d %d\n", &n, &m, &s);
while(m --)
{
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
}
}
void solve()
{
Q.push(s);
while(!Q.empty())
{
int x = Q.front();
Q.pop();
unsigned int m = G[x].size();
for(unsigned int i = 0; i < m; ++ i)
{
int y = G[x][i];
if(y != s && d[y] == 0)
{
d[y] = d[x] + 1;
Q.push(y);
}
}
}
}
void write()
{
freopen("bfs.out", "w", stdout);
for(int i = 1; i <= n; ++ i)
if(i != s && d[i] == 0)
printf("-1 ");
else
printf("%d ", d[i]);
printf("\n");
}
int main()
{
read();
solve();
write();
return 0;
}