Pagini recente » Cod sursa (job #109264) | Cod sursa (job #701706) | Cod sursa (job #1929108) | Cod sursa (job #2406270) | Cod sursa (job #916336)
Cod sursa(job #916336)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> V[100001];
int P[100001], X[100001], H[100001];
int N, M, S;
void Read()
{
fin >> N >> M >> S;
for(int i = 1; i <= M; i++)
{
int x, y;
fin >> x >> y;
V[x].push_back(y);
}
}
void BFS(int k)
{
int s, d;
s = 1;
d = 1;
P[k] = 1;
X[s] = k;
while(s <= d)
{
for(int i = 0; i < V[X[s]].size(); i++)
{
int j = V[X[s]][i];
if(P[j] == 0)
{
d++;
X[d] = j;
P[j] = 1;
H[j] = H[X[s]] + 1;
}
}
s++;
}
}
void Write()
{
for(int i = 1; i <= N; i++)
{
if(P[i] == 0)
fout << "-1" << " ";
else
fout << H[i] << " ";
}
}
int main()
{
Read();
BFS(S);
Write();
fin.close();
fout.close();
return 0;
}