Pagini recente » Cod sursa (job #1724533) | Cod sursa (job #1594162) | Borderou de evaluare (job #1900305) | Cod sursa (job #1569817) | Cod sursa (job #2321117)
#include <bits/stdc++.h>
#define N 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s;
vector<int>g[N];
int viz[N];
void read()
{int i,x,y;
fin>>n>>m>>s;
for(i=1;i<=m;++i)
{fin>>x>>y;
if(x!=y)g[x].push_back(y);
}
/*for(i=0;i<g[5].size();++i)
cout<<g[5][i]<<" ";*/
}
void bfs(int x)
{ queue<int>c;
int i,v;
viz[x]=1;
c.push(x);
while(!c.empty())
{v=c.front();c.pop();
//cout<<v<<" ";
for(i=0;i<g[v].size();++i)
if(viz[g[v][i]]==0)
{viz[g[v][i]]=viz[v]+1;
c.push(g[v][i]);
}
}
}
int main()
{ read();
bfs(s);
int i;
for(i=1;i<=n;++i)
if(viz[i]==0)fout<<-1<<" ";
else fout<<viz[i]-1<<" ";
return 0;
}