Pagini recente » Istoria paginii runda/ret1 | Istoria paginii utilizator/maestrul | Profil M@2Te4i | Cod sursa (job #285953) | Cod sursa (job #910880)
Cod sursa(job #910880)
#include<fstream>
#include<vector>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct el
{ int nod,d; } c[NMAX];
int cm(el A,el B)
{
return A.nod<B.nod;
}
int i,n,m,x,y,d,p,k,u;
bool viz[NMAX];
vector<int>v[NMAX];
void bfs(int x)
{
p=u=1;
c[1].nod=x;
viz[x]=1;
c[u].d=0;
vector<int>::iterator it;
while(p<=u)
{
for(it=v[c[p].nod].begin() ;it!=v[c[p].nod].end() ;it++)
if(!viz[*it])
{
viz[*it]=1;
c[++u].nod=*it;
c[u].d=c[p].d+1;
}
++p;
}
for(i=1;i<=n;++i)
if(!viz[i])
{
c[++u].nod=i; c[u].d=-1; }
}
int main ()
{
f>>n>>m>>k;
for(i=1;i<=m;++i)
{
f>>x>>y;
v[x].push_back(y);
}
for(i=1;i<=n;++i)
c[i].d=-1;
bfs(k);
sort(c+1,c+n+1,cm);
for(i=1;i<=n;++i)
{
g<<c[i].d<<" ";
}
return 0;
}