Mai intai trebuie sa te autentifici.
Cod sursa(job #854579)
Utilizator | Data | 13 ianuarie 2013 19:18:43 | |
---|---|---|---|
Problema | BFS - Parcurgere in latime | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.85 kb |
//BFS
using namespace std;
#include <fstream>
#include <vector>
#include <deque>
#define MAXN 100000
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> vecini[MAXN];
int cost[MAXN];
int N,M,S,x,y;
void BFS(int nod)
{int i,vizi;
int viz[MAXN];
vector<int>::iterator it;
deque <int> coada;
for (i=1;i<=N;i++) cost[i]=-1;
coada.push_back(nod);
cost[nod]=0;
while (!coada.empty())
{
for (it=vecini[nod].begin();it!=vecini[nod].end();++it)
if (cost[*it]==-1)
{
coada.push_back(*it);
cost[*it]=cost[coada.front()] + 1;
}
coada.pop_front();
nod=coada.front();
}
}
int main()
{
int i;
f>>N>>M>>S;
for (i=0;i<M;++i)
{
f>>x>>y;
vecini[x].push_back(y);
}
BFS(S);
for (i=1;i<=N;i++)
g<<cost[i]<<" ";
return 0;
}