Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <queue>
- #include <map>
- #include <unordered_map>
- using namespace std;
- typedef long long ll;
- int main()
- {
- int n;
- cin >> n;
- string s[3];
- unordered_map<string, vector<string>>g;
- map<string, int> d;
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < 3; ++j)
- {
- cin >> s[j];
- d[s[j]] = -1;
- }
- g[s[0]].push_back(s[1]), g[s[0]].push_back(s[2]);
- g[s[1]].push_back(s[0]), g[s[1]].push_back(s[2]);
- g[s[2]].push_back(s[0]), g[s[2]].push_back(s[1]);
- }
- queue<string>q;
- if (d.find("Isenbaev") != d.end()) {
- d["Isenbaev"] = 0;
- q.push("Isenbaev");
- }
- while (!q.empty())
- {
- string v = q.front();
- q.pop();
- for (int i = 0; i < g[v].size(); ++i)
- {
- if (d[g[v][i]] == -1)
- {
- d[g[v][i]] = d[v] + 1;
- q.push(g[v][i]);
- }
- }
- }
- for (auto i : d)
- {
- cout << i.first << ' ';
- if (i.second == -1)
- {
- cout << "undefined" << '\n';
- }
- else
- cout << i.second << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement