Pagini recente » Cod sursa (job #3122844) | infoarena - comunitate informatica, concursuri de programare | infoarena - te ajutam sa devii olimpic! | infoarena - te ajutam sa devii olimpic! | Cod sursa (job #3231123)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
set<int> graph[100005];
bool visited[100005];
int dist[100005];
void bfs(int s)
{
memset(dist,-1,sizeof(dist));
queue<int> q;
visited[s]=1;
dist[s]=0;
q.push(s);
while(!q.empty())
{
int current_vertex=q.front();
q.pop();
for( auto& u : graph[current_vertex])
{
if(!visited[u]) {
visited[u]=1;
q.push(u);
dist[u]=dist[current_vertex]+1;
}
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,m,s;
in>>n>>m>>s;
for(int i=0;i<m;i++)
{
int src,dest;
in>>src>>dest;
graph[src-1].insert(dest-1);
}
bfs(s-1);
for(int i=0;i<n;i++)
{
out<<dist[i]<<" ";
}
return 0;
}