Pagini recente » Cod sursa (job #2925969) | Cod sursa (job #2649894) | Cod sursa (job #889675) | Cod sursa (job #901864) | Cod sursa (job #1468081)
#include <fstream>
#include <vector>
using namespace std;
ofstream fout("bfs.out");
ifstream fin("bfs.in");
vector <int> v[100000];
struct coada
{
int in;
int sf;
int pas;
};
int n,m,s,x,y;
int bfs(int x)
{
int a=0,i,k=0,k1=0,k2=0,poz,j;
bool v1[100005]= {0};
coada c[100000]= {0};
if(x==s)
{
return 0;
}
for(i=0; i<v[s].size(); i++)
{
c[++k].in=s;
c[k].sf=v[s][i];
c[k].pas=1;
v1[s]=1;
}
a=1;
a++;
k2=k;
k=0;
for(i=1; i<=k2;)
{
if(c[i].sf==x)
{
return c[i].pas;
}
poz=c[i].sf;
if(v1[poz]==0)
{
for(j=0; j<v[poz].size(); j++)
{
c[k2+1].in=poz;
c[k2+1].sf=v[poz][j];
c[k2+1].pas=c[i].pas+1;
k2++;
v1[poz]=1;
}
}
for(j=1; j<k2; j++)
{
c[j].in=c[j+1].in;
c[j].sf=c[j+1].sf;
c[j].pas=c[j+1].pas;
}
c[k2].pas=0;
c[k2].in=0;
c[k2].sf=0;
k2--;
}
return -1;
}
int main()
{
fin>>n>>m>>s;
for(int i=1; i<=m; i++)
{
fin>>x>>y;
v[x].push_back(y);
}
for(int i=1; i<=n; i++)
{
fout<<bfs(i)<<" ";
}
return 0;
}