Pagini recente » Cod sursa (job #1827955) | Cod sursa (job #244342) | Cod sursa (job #1269023) | Cod sursa (job #3185678) | Cod sursa (job #2954016)
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
int n, m, s;
int v[1000][1000];
ifstream f("bfs.in");
ofstream g("bfs.out");
int d[1000];
void bfs(int start)
{
vector<bool> visited(n, false);
vector<int> q;
q.push_back(start);
visited[start] = true;
int vis;
int s = 0;
while(!q.empty())
{
vis = q[0];
int ok = 0;
if(vis != start)
{
d[vis] = d[vis] + 1;
}
q.erase(q.begin());
for(int i = 1; i<=n; i++)
{
if(v[vis][i] == 1 && !visited[i])
{
q.push_back(i);
d[i] = s;
visited[i] = true;
ok = 1;
}
}
if(ok == 1)
{
s++;
}
}
}
int main()
{
f>>n>>m>>s;
int x, y;
for(int i = 0; i<m; i++)
{
f>>x>>y;
v[x][y] = 1;
}
bfs(s);
for(int i = 1; i<=n; i++)
{
if(i != s && d[i] == 0)
{
g<<-1<<" ";
}
else
{
g<<d[i]<<" ";
}
}
return 0;
}