Pagini recente » Cod sursa (job #1497635) | Cod sursa (job #2353456) | Cod sursa (job #1682526) | Cod sursa (job #2467278) | Cod sursa (job #749637)
Cod sursa(job #749637)
#include<cstdio>
#include<vector>
#include<queue>
using std::queue;
using std::vector;
struct str
{
int n,v;
str()
{
n=v=0;
}
str (int nn,int vv)
{
n=nn;
v=vv;
}
};
vector<int> v[100005];
bool p[100005];
int r[100005];
int main()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
int n,m,s;
scanf ("%d%d%d",&n,&m,&s);
while(m--){
int x,y;
scanf ("%d%d",&x,&y);
v[x].push_back (y);
}
for(int i=1;i<=n;i++)
r[i]=-1;
queue<str> q;
q.push (str (s,0));
p[s]=1;
while(!q.empty ()){
str s=q.front();
q.pop();
int x=s.n;
int y=s.v;
r[x]=y;
for(vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
if(!p[*it]){
p[*it]=1;
q.push (str (*it,y+1));
}
}
for(int i=1;i<=n;i++)
printf ("%d ",r[i]);
return 0;
}