jayati

Evaluate Division

May 28th, 2024
854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     double dfs(string src,string dst,unordered_map<string,vector<pair<string,double>>> adjlist,set<string> vis)
  4.     {
  5.  
  6.         if(vis.find(src)!=vis.end())
  7.         {
  8.              return -1.0;
  9.         }
  10.         if(src==dst)
  11.         {
  12.             return 1.0;
  13.         }
  14.         vis.insert(src);
  15.         for(auto u:adjlist[src])
  16.         {
  17.            
  18.             double tmp=dfs(u.first,dst,adjlist,vis);
  19.             if(tmp!=-1.0)
  20.             {
  21.                 return tmp*(u.second);
  22.             }
  23.         }
  24.         return -1.0;
  25.     }
  26.     vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {
  27.         unordered_map<string,vector<pair<string,double>>> adjlist;
  28.         set<string> node;
  29.  
  30.         for(int i=0;i<equations.size();i++)
  31.         {
  32.             auto u = equations[i];
  33.             adjlist[u[0]].push_back({u[1],values[i]});
  34.             adjlist[u[1]].push_back({u[0],(double)(1/values[i])});
  35.  
  36.             node.insert(u[0]);
  37.             node.insert(u[1]);
  38.         }
  39.         vector<double> ans;
  40.         for(auto q:queries)
  41.         {
  42.             set<string> vis;
  43.             if(node.find(q[0])==node.end() || node.find(q[1])==node.end())
  44.             {
  45.                 ans.push_back(-1);
  46.             }
  47.             else
  48.             {
  49.                 ans.push_back(dfs(q[0],q[1],adjlist,vis));
  50.             }
  51.         }
  52.         return ans;
  53.     }
  54. };
Advertisement
Add Comment
Please, Sign In to add comment