Pagini recente » Cod sursa (job #2156667) | Cod sursa (job #3181557) | Cod sursa (job #1580382) | Cod sursa (job #2752117) | Cod sursa (job #2087211)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
const int N = 100005;
vector <int> g[N];
int d[N], c[N], n, m, s;
bool viz[N];
void bfs(int sursa)
{
int p = 1, u = 1, x, i;
viz[sursa] = true;
d[sursa] = 0;
c[1] = sursa;
while(p <= u)
{
x = c[p];
p++;
for(i = 0; i < g[x].size(); i++)
{
if(viz[g[x][i]] == false)
{
u++;
c[u] = g[x][i];
viz[g[x][i]] = true;
d[g[x][i]] = d[x] + 1;
}
}
}
}
int main()
{
in >> n >> m >> s;
int i, a, b;
for(i = 1; i <= m; i++)
{
in >> a >> b;
g[a].push_back(b);
}
for(i = 1; i <= n; i++)
d[i] = -1;
bfs(s);
for(i = 1; i <= n; i++)
out << d[i] <<" ";
return 0;
}