Pagini recente » Cod sursa (job #1903066) | Cod sursa (job #3143714) | Cod sursa (job #234412) | Cod sursa (job #2413847) | Cod sursa (job #1822453)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,x,y,s,top;
vector<int> adj[100001];
vector<int> dist;
vector<int> parent;
vector<char> color;
queue<int> Q;
int main()
{
fin>>n>>m>>s;
color.resize(n+1,'w');
dist.resize(n+1,INT_MAX);
parent.resize(n+1,-1);
for(int i=1;i<=m;i+=1)
{
fin>>x>>y;
adj[x].push_back(y);
}
Q.push(s);
dist[s]=0;
while(!Q.empty())
{
top=Q.front();
for(auto i:adj[top])if(color[i]=='w')
{
color[i]='g';
dist[i]=min(dist[top]+1,dist[i]);
parent[i]=top;
Q.push(i);
}
Q.pop();
color[top]='b';
}
for(int i=1;i<=n;i+=1)
{
if(dist[i]!=INT_MAX)
fout<<dist[i]<<' ';
else
fout<<-1<<' ';
}
fin.close();fout.close();
return 0;
}