Pagini recente » Cod sursa (job #2870664) | Cod sursa (job #434587) | Cod sursa (job #1718945) | Cod sursa (job #1650486) | Cod sursa (job #363459)
Cod sursa(job #363459)
#include<cstdio>
#include<vector>
#include<deque>
#define N 100001
using namespace std;
vector<int> v[N];
int n,m,s,sol[N];
deque<int> q;
int main()
{
freopen ("bfs.in", "r", stdin);
freopen ("bfs.out", "w", stdout);
int x,y,e;
scanf ("%d %d %d", &n, &m, &s);
for (int k=1; k<=m; k++)
{
scanf ("%d %d", &x, &y);
v[x].push_back(y);
}
memset (sol, -1, sizeof(sol));
vector<int> ::iterator i;
q.push_back(s);
sol[s]=0;
while (!q.empty())
{
e=q.front();
for (i=v[e].begin(); i!=v[e].end(); i++)
if (sol[*i]==-1)
{
sol[*i]=sol[e]+1;
q.push_back(*i);
}
q.pop_front();
}
for (int k=1; k<=n; k++) printf ("%d ", sol[k]);
return 0;
}