Pagini recente » Cod sursa (job #69748) | Cod sursa (job #865741) | Cod sursa (job #2547819) | Cod sursa (job #1258532) | Cod sursa (job #715312)
Cod sursa(job #715312)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
long N[100001] = {0};
//vector<int> M[100000];
vector<int> *M;
int main(void)
{
fstream fin("bfs.in",ios::in);
fstream fout("bfs.out",ios::out);
long Noduri,Muchii,Sursa,i,a,b;
M = new vector<int>[100001];
pair<int,int> *c;
fin >> Noduri >> Muchii >> Sursa;
for (i = 0;i < Muchii;i += 1)
{
fin >> a >> b;
M[a].push_back(b);
}
queue<pair<int,int> *> q;
q.push(new pair<int,int>(Sursa,1));
N[Sursa] = 1;
while (q.empty() == 0)
{
c = q.front();
q.pop();
for (i = 0;i < M[c->first].size();i += 1)
{
if ((N[M[c->first].at(i)] <= 0) && (M[c->first].at(i) != Sursa))
{
q.push(new pair<int,int>(M[c->first].at(i),c->second + 1));
N[M[c->first].at(i)] = c->second + 1;
}
}
}
for (i = 1;i <= Noduri;i += 1)
{
fout << (N[i] - 1) << " ";
}
fin.close();
fout.close();
return 0;
}