Pagini recente » Monitorul de evaluare | Cod sursa (job #661666) | Cod sursa (job #1426694) | Cod sursa (job #992205) | Cod sursa (job #1802362)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,g,c[100001],d[100001],p,u;
bool a[10001][10001],v[100001];
void latime(int r)
{
int i,k;
p=u=1;
c[p]=r;
d[r]=0;
v[r]=1;
while(p<=u)
{
k=c[p];
for(i=1;i<=n;i++)
if(v[i]==0 && a[k][i]==1)
{
u++;
c[u]=i;
d[i]=d[c[p]]+1;
v[i]=1;
}
p++;
}
}
int main()
{
fin>>n>>m>>g;
int i,x1,x2,j;
for(i=1;i<=n;i++)
d[i]=-1;
for(i=1;i<=m;i++)
{
fin>>x1>>x2;
a[x1][x2]=1;
if(x1==x2)
a[x1][x2]=0;
}
latime(g);
for(i=1;i<=n;i++)
fout<<d[i]<<" ";
return 0;
}