Pagini recente » Cod sursa (job #2775007) | Cod sursa (job #1149327) | Cod sursa (job #897150) | Cod sursa (job #2595614) | Cod sursa (job #493909)
Cod sursa(job #493909)
#include<cstdio>
#include<vector>
#include<deque>
#include<utility>
using namespace std;
void read();
void solve();
void show();
int i,j,N,C,cost[100001],n,m,s,cst,V,a,b;
vector<int> v[100001];
deque<int> q;
int main()
{
read();
solve();
show();
return 0;
}
void read()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(;m;m--)
{
scanf("%d %d",&a,&b);
v[a].push_back(b);
}
}
void solve()
{
vector<int>:: iterator it;
for(i=1;i<=n;i++)
cost[i]=-1;
q.push_back(s); cost[s]=0;
while(!q.empty())
{
N=q.front(); C=cost[N];
for(it=v[N].begin();it!=v[N].end();it++)
{
cst=C + 1;V=*it;
if(cost[V]<0)
{
cost[V]=cst;
q.push_back(V);
}
}
q.pop_front();
}
}
void show()
{
for(i=1;i<=n;i++)
printf("%d ",cost[i]);
}