fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include<unordered_map>
  4. #include <string>
  5. using namespace std;
  6. #include<algorithm>
  7. #include<set>
  8.  
  9. #define Fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  10. #define ll long long
  11.  
  12.  
  13. vector<pair<string,string>>ans;
  14.  
  15. unordered_map<string, string>mp;
  16. string find(string second) {
  17. string name=second;
  18. auto it = mp.find(second);
  19. if ( it!= mp.end()) {
  20. name=find( it->second);
  21. }
  22. return name;
  23. }
  24. void sol() {
  25.  
  26. int n; cin >> n;
  27. set<string>st;
  28. while (n--) {
  29. string old, newname; cin >> old >> newname; mp.insert({ old,newname });
  30. }
  31. for (auto it : mp) {
  32. if (st.find(it.first) == st.end()) {
  33. ans.push_back({ it.first, find(it.second) });
  34. st.insert(it.second);
  35. }
  36. }
  37. cout << ans.size() << endl;
  38. reverse(ans.begin(), ans.end());
  39. for (auto it : ans) {
  40. cout << it.first << " " << it.second << endl;
  41. }
  42. }
  43.  
  44. int main() {
  45. Fast
  46. int t = 1;
  47. while (t--) {
  48. sol();
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
0