Pagini recente » Cod sursa (job #280721) | Cod sursa (job #1217804) | Cod sursa (job #2977872) | Cod sursa (job #2127208) | Cod sursa (job #682241)
Cod sursa(job #682241)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
struct graf{
int d,v;
vector<int> next;
graf(){
d=-1;
v=0;
}
};
int main(){
vector<graf> orientat;
queue<pair<int , int> > coada;
int s;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n , m;
scanf("%d %d %d ", &n, &m, &s);
orientat.assign(n,graf());
orientat[s-1].d=0;
for(int i=0;i<m;i++){
int x , y;
scanf("%d %d",&x,&y);
orientat[x-1].next.push_back(y-1);
}
coada.push(make_pair(s-1,0));
while(coada.size()){
int nod = coada.front().first,d=coada.front().second;
coada.pop();
for(int i=0;i<(signed)orientat[nod].next.size();i++){
if(d<orientat[orientat[nod].next[i]].d||orientat[orientat[nod].next[i]].d==-1){
orientat[orientat[nod].next[i]].d=d+1;
coada.push(make_pair(orientat[nod].next[i], d+1));
}
}
}
for(int i=0;i<n;i++)
printf("%d ",orientat[i].d);
}