Pagini recente » Cod sursa (job #2729937) | Cod sursa (job #987750) | Istoria paginii runda/b/clasament | Cod sursa (job #3132451) | Cod sursa (job #851474)
Cod sursa(job #851474)
#include <fstream>
#include <vector>
#define max 100000
using namespace std;
int N,M,S;
vector <int> lista[max];
int cost[max],C[max];
ifstream f("bfs.in");
ofstream g("bfs.out");
void BFS(int S)
{int l,i,j;
for (i=1;i<=N;i++)
cost[i]=-1; //toate nodurile nevizitate
l=1;
C[l]=S;
cost[l]=0;
for (i=1;i<=l;i++)
for (j=0;j<=lista[C[l]].size();j++)
if (cost[lista[C[i]][j]]==-1)
{
l++;
C[l]=lista[C[i]][j];
cost[C[l]]=cost[C[i]]+1;
}
}
int main()
{int i,nod1,nod2;
f>>N>>M>>S;
for (i=1;i<=M;i++)
{
f>>nod1>>nod2;
lista[nod1].push_back(nod2);
}
BFS(S);
for (i=1;i<=N;i++)
g<<cost[i]<<" ";
g<<"\n";
return 0;
}