Pagini recente » Cod sursa (job #3167590) | Cod sursa (job #1088146) | Cod sursa (job #2474295) | Cod sursa (job #1323854) | Cod sursa (job #2661261)
#include <bits/stdc++.h>
#include<vector>
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N, M, S, poz;
vector<int> graf[100000];
int nrv[100000], cost[100000], q[100000];
void BFS(int nod)
{
int i, j;
for(i=1;i<=N;i++)
cost[i] = -1;
poz = 1;
cost[nod] = 0;
q[poz] = nod;
for(i=1;i<=poz;i++)
for(j=0;j<nrv[q[i]];j++)
if(cost[graf[q[i]][j]] == -1) // nevizitat
{
q[++poz] = graf[q[i]][j];
cost[q[poz]] = cost[q[i]] + 1;
}
}
int main()
{
int i,x,y;
f>>N>>M>>S;
for(i=1;i<=M;i++)
{
f>>x>>y;
graf[x].push_back(y);
}
for(i=1;i<=N;i++)
nrv[i] = graf[i].size();
BFS(S);
for(i=1;i<=N;i++)
g<<cost[i]<<" ";
return 0;
}