Pagini recente » Cod sursa (job #3244717) | Cod sursa (job #2391167) | Cod sursa (job #2277715) | Cod sursa (job #2999737) | Cod sursa (job #2924683)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dfs.in");
int vizitat[10001];
vector<int> la[10001];
vector<int> coada;
int main()
{
int n,m,s,u;
int x,y;
f>>n>>m>>s;
while(f>>x>>y)
{
la[x].push_back(y);
}
coada.push_back(s);
vizitat[s]=1;
int distanta[10001]= {};
distanta[s]=0;
while(coada.size()!=0)
{
u=coada.front();/// scot din coada primul nod
coada.erase(coada.begin());
for(int j=0; j<la[u].size(); j++) /// merg pe toti vecinii lui cei mai apropiati
if(vizitat[la[u][j]]==0)
{
distanta[la[u][j]]=distanta[u]+1;
coada.push_back(la[u][j]);
vizitat[la[u][j]]=1;
}
}
for(int i=1; i<=n; i++) /// daca nu se poate ajunge la nodul respectiv
if(distanta[i]==0 and i!=s)
distanta[i]=-1;
for(int i=1; i<=n; i++)
cout<<distanta[i]<<" ";
}