Pagini recente » Cod sursa (job #1530694) | Cod sursa (job #1166480) | Cod sursa (job #939108) | Cod sursa (job #2360686) | Cod sursa (job #1947086)
#include<fstream>
using namespace std;
struct nod{
int val;
nod* next;
};
void add(nod* &p, int x)
{
nod* q = new nod;
q->val = x;
q->next = p;
p = q;
}
nod* a[100100];
int cost[100100], n, m, v[100100], coada[2000100], s, x, y;
void bfs(int x){
v[x] = 1;
int st = 1, dr = 1;
coada[st] = x;
while(st <= dr)
{
x = coada[st];
for (nod* q = a[x]; q!= NULL; q = q->next)
{
if(!v[q->val])
{
dr++;
coada[dr] = q->val;
cost[q->val] = cost[x] + 1;
v[q->val] = 1;
}
}
st++;
}
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
cin >> n >> m >> s;
while(m--)
{
cin >> x >> y;
add(a[x],y);
}
bfs(s);
for(int i = 1; i <= n; i++)
{
if (i == s) cout << "0 ";
else cout << (cost[i] == 0 ? -1 :cost[i])<< " ";
}
}