Pagini recente » Cod sursa (job #1068026) | Cod sursa (job #3135189) | Cod sursa (job #1283193) | Cod sursa (job #1874797) | Cod sursa (job #2382435)
#include <bits/stdc++.h>
#define maxn 100005
using namespace std;
ifstream fi ("bfs.in");
ofstream fo ("bfs.out");
typedef struct nod {
int info;
nod *next;
nod *pred;
} *lista;
vector <int> A[maxn];
int c[maxn],G[maxn],dist[maxn];
int n,m,s;
void bfs(int nod)
{
int l = 1;
dist[nod] = 0;
c[l] = nod;
for(int i = 1; i <= l; i++)
for(int j = 0; j< G[c[i]]; j++)
if (dist[A[c[i]][j]] == -1)
{
c[++l] = A[c[i]][j];
dist[c[l]] = dist[c[i]] + 1;
}
}
int main()
{
int x,y,i;
fi>>n>>m>>s;
while(m--)
{
fi>>x>>y;
A[x].push_back(y);
}
memset(dist,-1,sizeof(dist));
for (i = 1; i <= n; i++)
G[i] = A[i].size();
bfs(s);
for(i=1;i<=n;i++)
fo<<dist[i]<<' ';
return 0;
}