Pagini recente » Cod sursa (job #2966745) | Cod sursa (job #1761773) | Cod sursa (job #2078153) | Cod sursa (job #1085943) | Cod sursa (job #961718)
Cod sursa(job #961718)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int t[100000], lg[100000], n, m, x, y, a[10000][10000], S;
bool sel[100000];
ifstream f("bfs.in");
ofstream g("bfs.out");
void citire()
{
int i;
f>>n>>m>>S;
memset(a,0,sizeof(a));
for(i=1; i<=m; i++)
{
f>>x>>y;
a[x][y]=1;
}
}
void bf(int nod)
{
int q[100],p,u,x;
p=u=1;
memset(q,0,sizeof(q));
memset(lg,0,sizeof(lg));
q[p]=nod;
sel[nod]=true;
t[nod]=lg[nod]=0;
while(p<=u)
{
x=q[p];
for(int i=1; i<=n; i++)
if(a[x][i] && !sel[i])
{
q[++u]=i;
sel[i]=true;
lg[i]=lg[x]+1;
t[i]=x;
}
p++;
}
}
void afisare()
{
for(int i=1; i<=n; i++)
{
if(sel[i]) g<<lg[i]<<" ";
else g<<"-1"<<" ";
}
}
int main()
{
citire();
memset(sel,false,sizeof(sel));
bf(S);
afisare();
return 0;
}