Pagini recente » Cod sursa (job #1394699) | Cod sursa (job #2543381) | Cod sursa (job #429795) | Cod sursa (job #3265333) | Cod sursa (job #3254602)
#include <bits/stdc++.h>
using namespace std;
#define TITLE "bfs"
#define ll long long
ifstream f (TITLE".in");
ofstream g (TITLE".out");
vector<int> Graph[100001];
int Visited[100001];
void bfs(int StartNode)
{
Visited[StartNode]=1;
queue<int> Q;
Q.emplace(StartNode);
for(;!Q.empty(); Q.pop())
{
int CurrentNode=Q.front();
for(auto it : Graph[CurrentNode])
if(Visited[it]==0)
{
Q.emplace(it);
Visited[it]=Visited[CurrentNode]+1;
}
}
}
int main()
{
int n,m,StartNode;
f>>n>>m>>StartNode;
while(m--)
{
int a,b;
f>>a>>b;
Graph[a].emplace_back(b);
}
bfs(StartNode);
for(int i=1; i<=n; i++, g<<' ')
{
if(Visited[i]==0)
g<<-1;
else
g<<Visited[i]-1;
}
return 0;
}