Pagini recente » Cod sursa (job #1686020) | Cod sursa (job #2102492) | Cod sursa (job #1964621) | Cod sursa (job #2901880) | Cod sursa (job #2439863)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector <int> g[100001];
int n , m ;
int dist[100001];
int f[100001];
void bfs (int src)
{
queue <int> q;
while (q.size())
q.pop();
q.push(src);
for (int i=0 ; i<=n ; i++)
{
dist[i]=0;
f[i]=0;
}
while (!q.empty())
{
int u=q.front();
q.pop();
for (int i=0 ; i<g[u].size() ; i++)
{
int v=g[u][i];
if (!f[v])
{
f[v]=1;
dist[v]=dist[u]+1;
q.push(v);
}
}
}
}
int main()
{
int x , y , s;
in>>n>>m>>s;
for (int i=0 ; i<m ; i++)
{
in>>x>>y;
if (x!=y)
g[x].push_back(y);
// g[y].push_back(x);
}
bfs(s);
for (int i=1 ; i<=n ; i++)
{
if (dist[i]==0)
out<<-1<<' ';
else
if (i==s)
out<<0<<' ';
else
out<<dist[i]<<' ';
}
return 0;
}