Pagini recente » Cod sursa (job #2791915) | Cod sursa (job #1339119) | Cod sursa (job #279663) | Cod sursa (job #2387468) | Cod sursa (job #2050586)
#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],val;
bool 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]=1;
while(!qu.empty())
{
crt=qu.front();
for(it=lst[crt].begin();it!=lst[crt].end();++it)
{
val=*it;
if(!vsol[val])
{
vsol[val]=vsol[crt]+1;
qu.push(val);
}
}
qu.pop();
}
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;
}