Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<int> bfs(int index, vector<int>& nodes, unordered_map<int,int>& delete, vector<int>& vis){
- int n = nodes.size();
- vector<int> tree;
- tree.push_back(node[i]);
- vis[index] = 1;
- queue<int> q;
- q.push(index);
- while(!q.empty()) {
- int node = q.front();
- q.pop();
- int L = 2*index + 1;
- int R = 2*index + 2;
- if(L<n && vis[L]==0 && delete.find(L)==delete.end()){
- vis[L] = 1;
- q.push(L);
- tree.push_back(node[L]);
- }
- if(R<n && vis[R]==0 && delete.find(R)==delete.end()){
- vis[R] = 1;
- q.push(R);
- tree.push_back(node[R]);
- }}
- Return tree;
- }
- vector<vector<int>> findForest(vector<int> nodes, vector<int> to_delele){
- int n = nodes.size();
- vector<int> vis(n,0);
- unordered_map<int,int> delete;
- for(int x: to_delete){
- delete[x] = 1;
- }
- vector<vector<int>> forests;
- for(int i=0;i<n;i++){
- if(vis[i] == 0 && delete.find(i)==delete.end()){
- vector<int> current_tree: bfs(i);
- forests.push_back(current_tree);
- }
- }
- return forests;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement