Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int dfs(int i,map<int,map<int,int>>& e,map<int,int>& visited,vector<bool>& hasApple){
- if(visited[i]==1){
- return 0;
- }
- visited[i]=1;
- int val=0;
- for(auto iter:e[i]){
- if(hasApple[iter.first]==1&&visited[iter.first]==0){
- cout<<i<<":"<<iter.first<<" ";
- val+=2;
- }
- int dfsval=dfs(iter.first,e,visited,hasApple);
- if(dfsval!=0){
- val+=2*(1-visited[iter.first])+dfsval;
- }
- }
- return val;
- }
- int minTime(int n, vector<vector<int>>& edges, vector<bool>& hasApple) {
- map<int,map<int,int>> e;
- for(auto iter:edges){
- e[iter[1]][iter[0]]=1;
- e[iter[0]][iter[1]]=1;
- }
- map<int,int> visited;
- return dfs(0,e,visited,hasApple);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement