Pagini recente » Cod sursa (job #2076774) | Cod sursa (job #1128974) | Monitorul de evaluare | Cod sursa (job #2023695) | Cod sursa (job #2008497)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N,M,S,a[10001][10001], viz[10001],cost[10001];
//BFS latime
void citiregraf()
{
f >> N >> M >> S;
int x, y;
while(f >> x >> y)
a[x][y] = 1;
}
void afis()
{
for(int i = 1; i <= N; i++)
if(cost[i]==0 && i!=S)
g<<"-1 ";
else
g<<cost[i]<<' ';
}
void latime(int x)
{
int i, j, p, u, cr, c[10001];
p = u = 1;
c[u] = x;
viz[x] = 1;
while(p <= u)
{
cr = c[p++];
for(j = 1; j <= N; j++)
if(a[cr][j] == 1 && viz[j] == 0)
{
c[++u] = j;
viz[j] = 1;
//cout << j << ' ';
cost[j]=cost[cr]+1;
}
}
}
int main()
{
citiregraf();
latime(S);
afis();
return 0;
}