Pagini recente » Cod sursa (job #705145) | Cod sursa (job #1774294) | Cod sursa (job #2335943) | Clasament winners5 | Cod sursa (job #964331)
Cod sursa(job #964331)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
struct vecini
{
vector<int> v;
};
vecini g[100009];
int d[100009];bool viz[100009];
void BFS(int nod)
{
int a[100009],p=1,u=1,i;
viz[nod]=true;
a[1]=nod;
while(p<=u)
{
for(i=0;i<g[a[p]].v.size();i++)
{
if(viz[g[a[p]].v[i]]==false)
{
u++;
a[u]=g[a[p]].v[i];
viz[g[a[p]].v[i]]=true;
d[g[a[p]].v[i]]=d[a[p]]+1;
}
}
p++;
}
}
int main()
{
int n,m,i,start,x,y;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&start);
for(i=1;i<=n;i++)
d[i]=-1;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
g[x].v.push_back(y);
}
d[start]=0;
BFS(start);
for(i=1;i<=n;i++)
printf("%d ",d[i]);
}