Advertisement
Asif_Anwar

Timus-1837. Isenbaev's Number

May 13th, 2021
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <vector>
  7. #include <set>
  8. #include <map>
  9. //#include <unordered_set>
  10. //#include <unordered_map>
  11. #include <queue>
  12. //#include <ctime>
  13. //#include <cassert>
  14. //#include <complex>
  15. #include <string>
  16. #include <cstring>
  17. //#include <chrono>
  18. //#include <random>
  19. #include <bitset>
  20. using namespace std;
  21. //using namespace chrono;
  22. #define pb push_back
  23. #define FastIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  24. #define F first
  25. #define S second
  26. typedef long long ll;
  27. typedef vector< int > vi;
  28. typedef vector< ll > V;
  29. typedef map<int, int > mp;
  30. #define debug cout << -1 << endl;
  31. #define REP(i, a, b) for(int i=a; i<b; i++)
  32. #define f0r(i, n) for (int i = 0; i < n; ++i)
  33. #define fore(a, x) for (auto& a : x)
  34. #define fori(i, a, b) for (int i = (a); i < (b); ++i)
  35. //#define pop pop_back
  36. #define sz(a) (int)a.size()
  37. //#define fin cin
  38. //#define fout cout
  39. const ll MOD = 1000000007;
  40. const int INF = (int)1e9;
  41. int dx[] = {-1, 0, 1, -1, 1, -1, 0, 1};
  42. int dy[] = {-1, -1, -1, 0, 0, 1, 1, 1};
  43. const double PI = acos(-1.0);
  44. const double diff = 1e-6;
  45.  
  46. bool vis[305];
  47. int dist[305];
  48. vector< int > v[305];
  49. map< string, int > m;
  50.  
  51. void bfs(int src)
  52. {
  53.     dist[src] = 0;
  54.     queue< int > q;
  55.     q.push(src);
  56.     vis[src] = true;
  57.     while(!q.empty()) {
  58.         int x = q.front();
  59.         q.pop();
  60.         for(auto zz: v[x]) {
  61.             if(!vis[zz]) {
  62.                 vis[zz] = true;
  63.                 dist[zz] = dist[x]+1;
  64.                 q.push(zz);
  65.             }
  66.         }
  67.     }
  68. }
  69.  
  70. void solve()
  71. {
  72.     int n;
  73.     cin >> n;
  74.     memset(dist, -1, sizeof(dist));
  75.     int cnt = 1;
  76.     set< string > s;
  77.     for(int i=0; i<n; i++) {
  78.         string a, b, c;
  79.         cin >> a >> b >> c;
  80.         s.insert(a);
  81.         s.insert(b);
  82.         s.insert(c);
  83.         if(!m[a]) m[a] = cnt++;
  84.         if(!m[b]) m[b] = cnt++;
  85.         if(!m[c]) m[c] = cnt++;
  86.         v[m[a]].pb(m[b]);
  87.         v[m[b]].pb(m[a]);
  88.         v[m[a]].pb(m[c]);
  89.         v[m[c]].pb(m[a]);
  90.         v[m[b]].pb(m[c]);
  91.         v[m[c]].pb(m[b]);
  92.     }
  93.     bfs(m["Isenbaev"]);
  94.     for(auto x: s) {
  95.         cout << x << " ";
  96.         if(dist[m[x]]!=-1) cout << dist[m[x]] << "\n";
  97.         else cout << "undefined" << "\n";
  98.     }
  99. }
  100.  
  101. int main()
  102. {
  103.     int t;
  104.     t = 1;
  105.     //cin >> t;
  106.     while(t--) {
  107.         solve();
  108.     }
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement