Pagini recente » Cod sursa (job #2779784) | Cod sursa (job #3291628) | Cod sursa (job #18198) | Cod sursa (job #2283867) | Cod sursa (job #672155)
Cod sursa(job #672155)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define Lmax 100001
#define F(i,exp) for(register int i=0;(exp);++i)
#define FU(i,exp) for(unsigned int i=0;(exp);++i)
int n,m,r,x,y;
vector<int > a[Lmax],t(Lmax,-1);
void cit()
{freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%d%d%d",&n,&m,&r);
F(i,i<m) scanf("%d%d",&x,&y),a[x].push_back(y);
}
void bfs()
{queue<int> q;
q.push(r);t[r]=0;
while(!q.empty())
{x=q.front();q.pop();
FU(i,i<a[x].size())
if(t[a[x][i]]==-1) {t[a[x][i]]=t[x]+1;q.push(a[x][i]);}
}
}
int main()
{cit();
bfs();
F(i,i<n) printf("%d ",t[i+1]); printf("\n");
return 0;
}