Pagini recente » Cod sursa (job #2923906) | Cod sursa (job #2200085) | Cod sursa (job #1704761) | Cod sursa (job #12334) | Cod sursa (job #984239)
Cod sursa(job #984239)
#include <fstream>
#include <vector>
using namespace std;
fstream fin("bfs.in", ios::in);
fstream fout("bfs.out", ios::out);
long long N,M,S;
vector <int> A[100010];
bool viz[100010];
long dist[100010];
long c[100010],p,u;
void BFS()
{
long t,z;
while(p<=u)
{
t=c[p];
p++;
viz[t]=1;
while(A[t].size() > 0 )
{
z=A[t].size();
if(viz[A[t][z-1]] == 0) { c[++u]=A[t][z-1]; dist[c[u]] = dist[t] + 1;}
viz[c[u]] = 1;
A[t].pop_back();
}
}
}
int main()
{
fin>>N>>M>>S;
long long i,x,y;
for(i=1; i<=M; i++)
{
fin>>x>>y;
A[x].push_back(y);
}
for(i=1; i<=M; i++)
{
dist[i]=-1;
}
dist[S]=0;
p=1; u=1; c[u]=S;
BFS();
for(i=1; i<=N; i++)
{
fout<<dist[i]<<' ';
}
fin.close(); fout.close();
return 0;
}