Pagini recente » Cod sursa (job #1646682) | Cod sursa (job #312457) | Cod sursa (job #561500) | Cod sursa (job #300863) | Cod sursa (job #504662)
Cod sursa(job #504662)
#include<cstdio>
#include<deque>
#include<vector>
using namespace std;
deque<int> Q;
vector<int> v[100010];
void read(),solve();
int S,N,M,x,y,cost[100010],i;
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
for(i=1;i<=M;i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
}
memset(cost,-1,sizeof(cost));
cost[S]=0;
Q.push_back(S);
}
void solve()
{
for(;!Q.empty();)
{
deque<int>::iterator iq;
iq=Q.begin();
vector<int>::iterator it;
for(it=v[*iq].begin();it!=v[*iq].end();it++)
{
if(cost[*it]==-1)
{
cost[*it]=cost[*iq]+1;
Q.push_back(*it);
}
}
Q.pop_front();
}
for(i=1;i<=N;i++)
printf("%d ",cost[i]);
}