Pagini recente » Cod sursa (job #189971) | Cod sursa (job #2880824) | Cod sursa (job #352189) | Cod sursa (job #2890136) | Cod sursa (job #1517043)
#include<fstream>
#include<vector>
using namespace std;
class nod
{
public:
int nr=0;
int ord=0;
vector <int> v;
} a[100002];
int coada[100002], b=0, e=1;
void bf(int s)
{
int i, j=1;
coada[0]=s;
while(b<=e)
{
for(i=0;i<a[coada[b]].nr;i++)
{
if((!a[a[coada[b]].v[i]].ord) && (a[coada[b]].v[i]!=coada[b]))
{
j++;
coada[j]=a[coada[b]].v[i];
a[coada[j]].ord=a[coada[b]].ord+1;
e++;
}
}
b++;
}
}
int main ()
{
int n, m, s, i, x, y;
ifstream g ("bfs.in");
ofstream h ("bfs.out");
g>>n>>m>>s;
for(i=0;i<m;i++)
{
//cout<<"Citire OK!\n";
g>>x>>y;
a[x].v.push_back(y);
a[x].nr++;
}
bf(s);
for(i=1;i<=n;i++)
{
if (i==s)
{
h<<0<<" ";
}
else
if(a[i].ord)
h<<a[i].ord<<" ";
else
h<<"-1 ";
}
g.close();
h.close();
return 0;
}