Pagini recente » Cod sursa (job #1712796) | Cod sursa (job #252122) | Cod sursa (job #855198) | Diferente pentru implica-te/arhiva-educationala intre reviziile 223 si 190 | Cod sursa (job #1784146)
#include <cstdio>
#include<deque>
#include<vector>
using namespace std;
int x,y,i,j,m,n,nod;
int v[100003],viz[100003];
deque<int>S;
vector<int>graf[100003];
void bfs(int nod)
{
int k=S.front();
S.push_back(nod);
viz[nod]=1;
while(!S.empty())
{
for(int i=0;i<graf[k].size();i++)
{
if(!viz[graf[k][i]])
{
S.push_back(graf[k][i]);
v[graf[k][i]]=v[k]+1;
viz[graf[S.front()][i]]=1;
}
}
S.pop_front();
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&nod);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
graf[x].push_back(y);
}
bfs(nod);
for(i=1;i<=n;i++)
if(v[i]==0&&i!=nod)
printf("-1 ");
else printf("%d ",v[i]);
return 0;
}