Pagini recente » Cod sursa (job #1377248) | Cod sursa (job #1260577) | Cod sursa (job #2465834) | Cod sursa (job #839386) | Cod sursa (job #682061)
Cod sursa(job #682061)
#include <stdio.h>
#include <vector>
using namespace std;
struct graf{
int d;
vector<int> next;
graf(){
d=-1;
}
};
vector<graf> orientat;
int s;
void bfs(int nod ,int d){
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;
bfs(orientat[nod].next[i], d+1);
}
}
}
int main(){
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);
}
bfs(s-1,0);
for(int i=0;i<n;i++)
printf("%d ",orientat[i].d);
}