Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <map>
  5. #include <vector>
  6. #include <set>
  7. #include <cstdlib>
  8. #include <cstdio>
  9. using namespace std;
  10. const int maxn = 507;
  11.  
  12. vector<string> S;
  13. map<string, int> idx;
  14.  
  15. vector<int> g[maxn];
  16. bool used[maxn];
  17. int tin[maxn], timer = 0;
  18. int dfs(int v, int p = -1)
  19. {
  20.     tin[v] = timer++;
  21.     used[v] = true;
  22.     int res = 0;
  23.     for (int i = 0; i < (int)g[v].size(); ++i)
  24.     {
  25.         int to = g[v][i];
  26.         if (used[to])
  27.         {
  28.             res = max(res, tin[to] - tin[v]);
  29.         }
  30.         else
  31.         {
  32.             res = max(res, dfs(to));
  33.         }
  34.     }
  35.     return res;
  36. }
  37.  
  38. int main()
  39. {
  40.     //freopen("input.txt", "r", stdin);
  41.     int n;
  42.     cin >> n;
  43.     vector<pair<string, string> > Q;
  44.     for (int i = 0; i < n; ++i)
  45.     {
  46.         string a, b;
  47.         cin >> a >> b;
  48.         Q.push_back(make_pair(a, b));
  49.         S.push_back(a);
  50.         S.push_back(b);
  51.     }
  52.     sort(S.begin(), S.end());
  53.     S.resize(distance(S.begin(), unique(S.begin(), S.end())));
  54.  
  55.     for (int i = 0; i < (int)S.size(); ++i)
  56.     {
  57.         idx[S[i]] = i;
  58.     }
  59.  
  60.     for (int i = 0; i < n; ++i)
  61.     {
  62.         int a = idx[Q[i].first],
  63.             b = idx[Q[i].second];
  64.         g[a].push_back(b);
  65.         g[b].push_back(a);
  66.     }
  67.  
  68.     int ans = 0;
  69.     for (int i = 0; i < (int)S.size(); ++i)
  70.     {
  71.         if (!used[i])
  72.         {
  73.             ans = max(ans, dfs(i));
  74.         }
  75.  
  76.     }
  77.     if (ans < 3)
  78.         cout << 0;
  79.     else
  80.         cout << ans;
  81.    
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement