Pagini recente » Cod sursa (job #1164316) | Cod sursa (job #1860459) | Cod sursa (job #2939607) | Cod sursa (job #2861324) | Cod sursa (job #2547259)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int dim = 100001;
struct li
{
int x;
li* urm = NULL;
};
struct nod
{
int no, d;
};
int n, m, s, sol[dim];
bool viz[dim];
li* muchii[dim];
nod coada[dim];
void adauga(int x, int y)
{
li* nou = new li;
nou->x = y;
nou->urm = muchii[x];
muchii[x] = nou;
}
void bfs(int start)
{
int st = 1, dr = 1;
nod current;
current.no = start;
current.d = 0;
coada[st] = current;
viz[start] = 1;
while(st <= dr)
{
current = coada[st++];
sol[current.no] = current.d;
for(li* p = muchii[current.no]; p != NULL; p = p->urm)
{
if(!viz[p->x])
{
dr++;
coada[dr].no = p->x;
coada[dr].d = current.d + 1;
viz[p->x] = 1;
}
}
}
}
void read()
{
in>>n>>m>>s;
int x, y;
for(int i = 1; i <= m; i++)
{
in>>x>>y;
adauga(x, y);
}
for(int i = 1; i <= n; i++)
sol[i] = -1;
}
void solve()
{
bfs(s);
}
void print()
{
for(int i = 1; i <= n; i++)
out<<sol[i]<<' ';
}
int main()
{
read();
solve();
print();
return 0;
}