题意理解
给定一组除式和除式对应的商,求一组待求除式的结果,除不尽用-1.0表示
问题分析
DFS
图的结构用邻接表结构。
用集合表示待访问的节点
其他
链接
vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {
unordered_map<string, unordered_map<string, double>> graph; //定义图(邻接表)
int index = 0; //取除式对应的商
for (auto equation : equations) { //遍历除式
string key1 = equation[0]; //被除数(图的一个节点)
string key2 = equation[1]; //除数(图的另一个节点)
graph[key1][key2] = values[index]; //被除数指向除数,边的权重是商
graph[key2][key1] = 1.0 / values[index]; //除数指向被除数,边的权重是商的倒数
index ++;
}
vector<double> res(queries.size(), -1.0); //初始化所求除式