d66_q1c_company_department.cpp
cpp
#include <iostream>
#include <map>
#include <set>
#include <string>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, M;
std::cin >> N >> M;
std::map<std::string, std::set<std::string>> dep;
std::map<std::string, std::string> person;
for (int i = 0; i < N; i++) {
std::string n, d;
std::cin >> n >> d;
dep[d].insert(n);
person[n] = d;
}
for (int i = 0; i < M; i++) {
int t;
std::string p1, p2;
std::cin >> t >> p1 >> p2;
if (t == 1) {
auto oldDep = person[p1];
dep[oldDep].erase(p1);
dep[p2].insert(p1);
person[p1] = p2;
} else if (t == 2) {
auto &rip = dep[p1];
for (auto &p : rip) {
dep[p2].insert(p);
person[p] = p2;
}
dep.erase(p1);
}
}
for (const auto &[d, p] : dep) {
std::cout << d << ":";
for (const auto &n : p) {
std::cout << " " << n;
}
std::cout << "\n";
}
}See on GitHub
Last Updated: 6/11/2566 14:43:46 (UTC+7)