Pagini recente » Cod sursa (job #1447215) | Cod sursa (job #10328) | Cod sursa (job #2589550) | Cod sursa (job #1735635) | Cod sursa (job #2050537)
#include <fstream>
#include <vector>
#include <queue>
#define mxvf 100002
using namespace std;
ifstream fin ("bfs.in");
ofstream fout("bfs.out");
vector <int> lst[mxvf];
vector <int>::iterator it;
queue <int> qu;
int nvf,nar,x,y,srs,crt,i,vsol[mxvf],nstp,val;
bool viz[mxvf],same;
int main()
{
fin>>nvf>>nar>>srs;
for(i=1;i<=nar;++i)
{
fin >> x >> y;
if (x==y && x==srs)
{
same=1;
}
else lst[x].push_back(y);
}
qu.push(srs);
viz[srs]=nstp=1;
while(!qu.empty())
{
crt=qu.front();
for(it=lst[crt].begin();it!=lst[crt].end();++it)
{
val=*it;
if(!viz[val])
{
vsol[val]=vsol[crt]+1;
qu.push(val);
}
}
qu.pop();
++nstp;
}
for(i=1;i<=nvf;++i)
{
if(i==srs && same)
fout<<0;
else if(!vsol[i])
fout<<-1;
else
fout<<vsol[i];
fout<<' ';
}
return 0;
}