Pagini recente » Cod sursa (job #821990) | Cod sursa (job #2524211) | Cod sursa (job #925208) | Cod sursa (job #273030) | Cod sursa (job #1706185)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector<int>f[100001];
long long k,i,m,x,j,k1,i1,ct;
queue<int>q;
bool g[100001];
int h[100001];
int main()
{
ifstream fin;
ofstream fout;
fin.open("bfs.in");
fout.open("bfs.out");
fin>>x>>m>>ct;
for(k=1;k<=m;k++)
{
fin>>i>>j;
f[i].push_back(j);
}
/*for(k=1;k<=x;k++)
{
if(f[k].size()>0)
{
cout<<k<<":";
for(i=0;i<f[k].size();i++)
cout<<" "<<f[k][i];
cout<<endl;
}
}*/
q.push(ct); h[ct]=0;g[ct]=1;
for(;!q.empty();q.pop())
{
for(k=0;k<f[q.front()].size();k++)
{
i=f[q.front()][k];
if(g[i]==0)
{
q.push(i);
g[i]=1;
h[i]=h[q.front()]+1;
}
}
}
for(k=1;k<=x;k++)
{
if(k==ct)
fout<<"0 ";
else
{
if(!h[k])
fout<<"-1 ";
else
fout<<h[k]<<" ";
}
}
return 0;
}