Pagini recente » Cod sursa (job #2973668) | Cod sursa (job #1577047) | Cod sursa (job #356671) | Monitorul de evaluare | Cod sursa (job #1729883)
#include <fstream>
#include <vector>
#include <iterator>
#include <queue>
#define NMAX 100005
using namespace std;
queue<int> vecini[NMAX];
int cost[NMAX];
int freq[NMAX];
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
int el,n,m,a,b,start,current;
f >> n >> m >>start;
for(int i=0;i<m;i++){
f >> a >> b;
vecini[a].push(b);
}
queue<int> c;
c.push(start);
freq[start]=1;
cost[start]=0;
while(!c.empty()){
current = c.back();
c.pop();
while(!vecini[current].empty()){
el = vecini[current].back();
vecini[current].pop();
if(!freq[el]){
freq[el]++;
cost[el]=cost[current]+1;
c.push(el);
}
}
}
for(int i=1;i<=n;i++)
if(freq[i]) g << cost[i] << " ";
else g << -1 << " ";
return 0;
}