Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- double dfs(string src,string dst,unordered_map<string,vector<pair<string,double>>> adjlist,set<string> vis)
- {
- if(vis.find(src)!=vis.end())
- {
- return -1.0;
- }
- if(src==dst)
- {
- return 1.0;
- }
- vis.insert(src);
- for(auto u:adjlist[src])
- {
- double tmp=dfs(u.first,dst,adjlist,vis);
- if(tmp!=-1.0)
- {
- return tmp*(u.second);
- }
- }
- return -1.0;
- }
- vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {
- unordered_map<string,vector<pair<string,double>>> adjlist;
- set<string> node;
- for(int i=0;i<equations.size();i++)
- {
- auto u = equations[i];
- adjlist[u[0]].push_back({u[1],values[i]});
- adjlist[u[1]].push_back({u[0],(double)(1/values[i])});
- node.insert(u[0]);
- node.insert(u[1]);
- }
- vector<double> ans;
- for(auto q:queries)
- {
- set<string> vis;
- if(node.find(q[0])==node.end() || node.find(q[1])==node.end())
- {
- ans.push_back(-1);
- }
- else
- {
- ans.push_back(dfs(q[0],q[1],adjlist,vis));
- }
- }
- return ans;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment