Pagini recente » Cod sursa (job #2229236) | Borderou de evaluare (job #1527580) | Borderou de evaluare (job #1568292) | Cod sursa (job #786065) | Cod sursa (job #956878)
Cod sursa(job #956878)
#include<fstream>
#include<list>
#include<vector>
#include<cstdio>
using namespace std;
int main(){
int n, m, s, i, x, y;
freopen("bfs.in", "rt", stdin);
freopen("bfs.out", "wt", stdout);
scanf("%d %d %d", &n, &m, &s);
list<int> G[n+1], q;
vector<int> d(n+1, -1);
for(i=0; i<m; i++){
scanf("%d %d", &x, &y);
G[x].push_back(y);
}
q.push_back(s);
d[s]=0;
while(q.size()>0){
x = q.front(), q.pop_front();
for(auto it=G[x].begin(); it!=G[x].end(); it++){
if(d[*it]==-1)
q.push_back(*it), d[*it] = d[x]+1;
}
}
for(i=1; i<=n; i++)
printf("%d ", d[i]);
fclose(stdin);
fclose(stdout);
return 0;
}