Pagini recente » Cod sursa (job #2379081) | Cod sursa (job #3165590) | Cod sursa (job #1401164) | Cod sursa (job #450951) | Cod sursa (job #900894)
Cod sursa(job #900894)
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct coada
{
int nod, lg;
};
queue<coada> q;
int n, m, s, vz[NMAX], lg[NMAX];
vector<int> a[NMAX];
void Citeste()
{
int x, y, i;
f>>n>>m>>s;
for (i=1; i<=m; ++i)
{
f>>x>>y;
a[x].push_back(y);
}
}
void Solve()
{
coada r, z;
int i, nod;
for (i=1; i<=n; ++i) lg[i]=-1;
r.nod=s; r.lg=0;
q.push(r); vz[s]=1; lg[s]=0;
while (!q.empty())
{
z=q.front(); q.pop();
for (i=0; i<a[z.nod].size(); ++i)
{
nod=a[z.nod][i];
if (!vz[nod])
{
lg[nod]=lg[z.nod]+1;
vz[nod]=1;
r.nod=nod;
r.lg=lg[nod];
q.push(r);
}
}
}
for (i=1; i<=n; ++i) g<<lg[i]<<" ";
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}