Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define pb push_back
  3. #define mkp make_pair
  4. #define maxx 1000000005
  5. #define MOD 1000003
  6. #define sf(n) scanf("%lld", &n);
  7. #define sff(n,m) scanf("%lld %lld", &n, &m)
  8. #define pf(n) printf("%lld\n", n)
  9. #define pff(n,m) printf("%lld %lld\n", n, m)
  10. #define mem(a) memset(a, 0, sizeof(a))
  11. #define fr(i,n) for(ll i=0; i<n; i++)
  12. #define my_sizeof(type) ((char *)(&type+1)-(char*)(&type))
  13. #define pi 2*acos(0.0)
  14. #define F first
  15. #define S second
  16. #define EPS 1e-9
  17.  
  18. using namespace std;
  19. typedef long long ll;
  20. typedef unsigned long long ull;
  21.  
  22. map<string, string> mp;
  23. map<string, string> ::iterator it;
  24. map<string, ll>idx;
  25. vector<string> v[105];
  26.  
  27. bool visited[105];
  28.  
  29. void dfs(ll s) {
  30.     visited[s] = true;
  31.     for(ll i = 0;i < v[s].size();++i)    {
  32.      if(visited[idx[v[s][i]]] == false)
  33.     {
  34.         cout << v[s][i] << endl;
  35.         dfs(idx[v[s][i]]);
  36.     }
  37.     }
  38. }
  39.  
  40. int main()
  41. {
  42.     //freopen("testcases.txt","r",stdin);
  43.  
  44.     ll t; cin>>t;
  45.     fr(k,t)
  46.     {
  47.         mem(visited);
  48.         mp.clear();
  49.         idx.clear();
  50.         ll n; cin>>n;
  51.         vector< pair<string, ll> > in;
  52.         getchar();
  53.         string p[105];
  54.         idx["."] = 0;
  55.         fr(i,n)
  56.         {
  57.             string s;
  58.             getline(cin, s);
  59.             idx[s] = i+1;
  60.             ll space=0;
  61.             fr(j,s.size())
  62.             {
  63.                 if(s[j] != ' ') break;
  64.                 space++;
  65.             }
  66.             p[space] = s;
  67.             if(space==0) mp[s]=".";
  68.             else mp[s] = p[space-1];
  69.  
  70.             in.pb(mkp(s, space));
  71.         }
  72.         for(it=mp.begin(); it!=mp.end(); it++)
  73.         {
  74.             v[idx[it->S]].pb(it->F);
  75.         }
  76.         cout << "Case "<<k+1<<":" << endl;
  77.         dfs(0);
  78.  
  79.     }
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement