Pagini recente » Cod sursa (job #283124) | Cod sursa (job #2318403) | Cod sursa (job #66480) | Cod sursa (job #3273279) | Cod sursa (job #2797882)
#include<bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> adiacenta[100010];
int cost[100010];
bool deja_Vizitat[100010];
void BFS(int nrvarfuri, int start, vector<int>* adiacenta)
{
queue <int> coada;
coada.push (start);
cost[start]=0;
deja_Vizitat[start]=1;
int varf_curent;
while (coada.size()!=0)
{
varf_curent=coada.front();
for(int i=0; i<adiacenta[varf_curent].size(); i++)
{
if(deja_Vizitat[adiacenta[varf_curent][i]]==0)
{
coada.push(adiacenta[varf_curent][i]);
cost[adiacenta[varf_curent][i]] = cost[varf_curent]+1;
deja_Vizitat[adiacenta[varf_curent][i]] = 1;
}
}
coada.pop();
}
}
int main()
{
int nrvarfuri, nrmuchii, start;
f>>nrvarfuri;
f>>nrmuchii;
f>>start;
int nod1, nod2;
for(int i=0; i<nrmuchii; i++)
{
f>>nod1;
f>>nod2;
adiacenta[nod1].push_back(nod2);
}
BFS(nrvarfuri, start, adiacenta);
for(int i=1; i<=nrmuchii; i++)
{
if(deja_Vizitat[i] == 1)
g<<cost[i]<<" ";
else
g<<"-1 ";
}
return 0;
}