// UVa 10009 - All Roads Lead Where? #include <iostream> #include <string> #include <string.h> #include <stdio.h> using namespace std; string path[26]; char p[26]; int k; bool lnk[26][26]; void build_paths(char c) { p[k++] = c; path[c] = ""; for (int kk = 0; kk < k; kk++) path[c] = path[c].append(1, p[kk] + 'A'); for (char d = 0; d < 26; d++) if (lnk[c][d]) { build_paths(d); } k--; } int main() { int t; for (cin >> t; t; t--) { int m, n; cin >> m >> n; memset(lnk, false, sizeof(lnk)); for (int i = 0; i < m; i++) { string c1, c2; cin >> c1 >> c2; lnk[c1[0] - 'A'][c2[0] - 'A'] = true; } k = 0; build_paths('R' - 'A'); for (int i = 0; i < n; i++) { string c1, c2; cin >> c1 >> c2; string p1 = path[c1[0] - 'A']; string p2 = path[c2[0] - 'A']; int j = 0; while (p1[j] == p2[j]) { j++; if (j == p1.length() || j == p2.length()) break; } for (int k = p1.length() - 1; k >= j; k--) printf("%c", p1[k]); printf("%c", p1[j - 1]); for (int k = j; k < p2.length(); k++) printf("%c", p2[k]); printf("\n"); } if (t > 1) cout << endl; } return 0; }
Saturday, June 13, 2015
UVa 10009 - All Roads Lead Where?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment