Pagini recente » Cod sursa (job #2167871) | Cod sursa (job #1391435) | Cod sursa (job #373228) | Profil Cojocaru_Michel_Daniel_324CB | Cod sursa (job #476478)
Cod sursa(job #476478)
#include<cstdio>
#include<queue>
#include<vector>
#include<bitset>
using namespace std;
int i,n,m,d[100100],s;
bitset<100010> fol;
vector<int> a[100010];
queue<int> q;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
fol[s]=1;
q.push(s);
for(i=1;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
a[x].push_back(y);
}
while(!q.empty())
{
int u=q.front();
q.pop();
for(i=0;i<a[u].size();++i)
if(!fol[ a[u][i] ])
{
fol[a[u][i]]=1;
q.push(a[u][i]);
d[ a[u][i] ]= d[u]+1;
}
}
for(i=1;i<=n;++i)
if(d[i]==0&&i!=s) printf("-1 ");
else printf("%d ",d[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}