Pagini recente » Cod sursa (job #43493) | Cod sursa (job #2441850) | Cod sursa (job #2618102) | Cod sursa (job #319516) | Cod sursa (job #995558)
Cod sursa(job #995558)
#include <fstream>
#include <vector>
#include <string.h>
using namespace std;
#define MAX 100005
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, start, t, x, y;
vector <int> v[MAX];
int distanta[MAX], a[MAX], s[MAX];
void bfs (int nod)
{
int i, j;
memset(distanta, -1, sizeof(distanta));
t = 1;
distanta[nod] = 0;
s[t] = nod;
for ( i = 1; i <= t; i ++ )
{
for ( j = 0; j < a[ s[i] ]; j ++ )
{
if ( distanta [ v[s[i]][j] ] == -1 )
{
s[++t] = v[s[i]][j];
distanta[s[t]] = distanta[s[i]] + 1;
}
}
}
}
int main()
{
int i;
f >> n >> m >> start;
for ( i = 1; i <= m; i ++ )
{
f >> x >> y;
v[x].push_back(y);
}
for ( i = 1; i <= n; i ++ )
{
a[i] = v[i].size();
}
bfs(start);
for ( i = 1; i <= n; i ++ )
g << distanta[i] << " ";
g << '\n';
f.close();
g.close();
return 0;
}