Pagini recente » Cod sursa (job #1838111) | Cod sursa (job #2886912) | Cod sursa (job #1999459) | Cod sursa (job #1758967) | Cod sursa (job #1023019)
#include <cstdio>
#include <vector>
using namespace std;
int qu[100010],cost[100010];
vector <int> vec[100010];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s,i,x,y;
scanf("%d %d %d\n",&n,&m,&s);
for (i=1;i<=n;++i)
cost[i]=-1;
for (i=0;i<m;++i)
{
scanf("%d %d\n",&x,&y);
vec[x].push_back(y);
}
// START DFS
int head=1,rear=1;
qu[1]=s;
cost[s]=0;
while (head<=rear)
{
x=vec[qu[head]].size();
for (i=0;i<x;++i)
{
if (cost[vec[qu[head]][i]]==-1)
{
qu[++rear]=vec[qu[head]][i];
cost[vec[qu[head]][i]]=cost[qu[head]]+1;
}
}
++head;
}
for (i=1;i<=n;++i)
printf("%d ",cost[i]);
fclose(stdin);
fclose(stdout);
return 0;
}