Pagini recente » Cod sursa (job #876732) | Cod sursa (job #2272752) | Cod sursa (job #2475465) | Cod sursa (job #1763605) | Cod sursa (job #2365521)
#include<fstream>
#include<vector>
#include<string.h>
using namespace std;
#define maxn 100010
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,o,l,d[maxn],c[maxn],h[maxn];
vector <int> a[maxn];
int bfs(int nod)
{
int i,j;
memset(d,-1,sizeof(d));
d[nod]=0;
l=1;
c[l]=nod;
for(i=1;i<=l;i++)
for(j=0;j<h[c[i]];j++)
if(d[a[c[i]][j]]==-1)
{
c[++l]=a[c[i]][j];
d[c[l]]=d[c[i]]+1;
}
}
int main()
{
int x,y;
f>>n>>m>>o;
for(int i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
}
for(int i=1;i<=n;i++)
h[i]=a[i].size();
bfs(o);
for(int i=1;i<=n;i++)
g<<d[i]<<" ";
}