Pagini recente » Cod sursa (job #902523) | Cod sursa (job #1296278) | Cod sursa (job #903264) | Monitorul de evaluare | Cod sursa (job #1474268)
#include <cstdio>
#include <vector>
#define LIM 100023
using namespace std;
struct qu
{
int nod;
int dist=0;
}a[LIM];
int n,m,vis[LIM];
vector<int>adj[LIM];
void bfs()
{
int pt=2;
for(int i=1;i<=n;i++)
{
if(a[i].nod==0) return;
vector<int>::iterator it;
for(it=adj[a[i].nod].begin();it!=adj[a[i].nod].end();++it)
{
if(vis[*it]==0)
{
a[pt].nod=*it;
a[pt].dist=a[i].dist+1;
vis[*it]=1;
++pt;
}
}
}
}
int main()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&a[1].nod);
vis[a[1].nod]=1;
int x,y;
for(int i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
adj[x].push_back(y);
}
bfs();
for(int i=1;i<=n;i++)
{
vis[a[i].nod]=a[i].dist;
if(vis[i]==0) vis[i]=-1;
}
vis[a[1].nod]=0;
for(int i=1;i<=n;i++) printf("%d ",vis[i]);
}