Pagini recente » Cod sursa (job #1889483) | Cod sursa (job #2443515) | Cod sursa (job #1851221) | Cod sursa (job #1722760) | Cod sursa (job #1348716)
#include <cstdio>
#include <queue>
using namespace std;
int n,m,sursa,a[100][100],nod,viz[100],w[100];
queue<int> Q;
void citire()
{
int x,y;
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&sursa);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=1;
w[i]=-1;
}
fclose(stdin);
}
void afisare()
{
freopen("bfs.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",w[i]);
fclose(stdout);
}
void bfs(int s)
{
Q.push(s);
viz[s]=1;
w[s]=0;
while(!Q.empty())
{
nod=Q.front();
Q.pop();
for(int i=1;i<=n;i++)
if(a[nod][i] && !viz[i])
{
viz[i]=1;
Q.push(i);
w[i]=w[nod]+1;
}
}
}
int main()
{
citire();
bfs(sursa);
afisare();
}