Pagini recente » Cod sursa (job #1144279) | Cod sursa (job #1514937) | Cod sursa (job #2421364) | Cod sursa (job #2214278) | Cod sursa (job #753613)
Cod sursa(job #753613)
#include <fstream>
#include <vector>
using namespace std;
vector <int> G[100005];
long int i,j,n,m,x,y,nr,v[100005],s,coada[100005],inc,sf,sf1,k;
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>s;
for (i=1;i<=m;i++) {
f>>x>>y;
G[x].push_back(y);
}
nr=0;
coada[1]=s;
for (i=1;i<=n;i++)
v[i]=-1;
inc=1;sf=1;sf1=1;
while (inc<=sf) {
nr++;
for (i=inc;i<=sf;i++)
k=coada[i];
for (j=0;j<G[k].size();j++)
if (v[G[k][j]]==-1 &&k!=G[k][j]) {
v[G[k][j]]=nr;
sf1++;
coada[sf1]=G[k][j];
}
inc=sf+1;
sf=sf1;
}
for (i=1;i<=n;i++) {
if (i==s) g<<'0'<<' ';
else
g<<v[i]<<' ';
}
f.close();
g.close();
return 0;
}