#include #include #include #include #define ld long double using namespace std; int main() { int n, q; cin >> n >> q; cout << setprecision(20); unordered_map> units; string a, b, _; ld x; for (int i = 0; i < n; i++) { // 1 unit = value unit cin >> _ >> a >> _ >> x >> b; units[a][b] = x; units[b][a] = 1 / x; } for (int i = 0; i < q; i++) { // value unit to unit cin >> x >> a >> _ >> b; unordered_map seen = {{a, x}}; queue todo({a}); while (!todo.empty()) { string curr = todo.front(); if (curr == b) { cout << seen[b] << endl; break; } todo.pop(); for (auto const& [k, v] : units[curr]) { if (seen.find(k) == seen.end()) { seen[k] = seen[curr] * v; todo.push(k); } } } if (todo.empty()) cout << "impossible" << endl; } }