Pagini recente » Cod sursa (job #1882267) | Cod sursa (job #2856663) | Cod sursa (job #2903527) | Cod sursa (job #2298198) | Cod sursa (job #984246)
Cod sursa(job #984246)
#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,j;
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();
}*/
for(j=0; j<A[t].size(); j++)
{
if(viz[A[t][j]] == 0) { c[++u]=A[t][j]; dist[c[u]] = dist[t] + 1;}
viz[c[u]] = 1;
}
}
}
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;
}