Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream f("bfs.in");
- ofstream g("bfs.out");
- const int NMAX = 100005;
- int N, M, S, dist[NMAX];
- vector < int > Muchii[NMAX];
- queue < int > Q;
- void BFS()
- {
- int nod,vecin;
- while(!Q.empty())
- {
- nod=Q.front();
- Q.pop();
- for(unsigned int i=0;i<Muchii[nod].size();i++)
- {
- vecin=Muchii[nod][i];
- if(dist[vecin]==-1)
- {
- Q.push(vecin);
- dist[vecin]=dist[nod]+1;
- }
- }
- }
- }
- void Citire()
- {
- f>>N>>M>>S;
- for(int i=1;i<=M;i++)
- {
- int x,y;
- f>>x>>y;
- Muchii[x].push_back(y);
- }
- }
- int main()
- {
- Citire();
- for(int i=1;i<=N;i++) dist[i]=-1;
- dist[S]=0;
- Q.push(S);
- BFS();
- for(int i=1;i<=N;i++) g<<dist[i]<<" ";
- f.close();
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment