Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define pb push_back
- #define mkp make_pair
- #define maxx 1000000005
- #define MOD 1000003
- #define sf(n) scanf("%lld", &n);
- #define sff(n,m) scanf("%lld %lld", &n, &m)
- #define pf(n) printf("%lld\n", n)
- #define pff(n,m) printf("%lld %lld\n", n, m)
- #define mem(a) memset(a, 0, sizeof(a))
- #define fr(i,n) for(ll i=0; i<n; i++)
- #define my_sizeof(type) ((char *)(&type+1)-(char*)(&type))
- #define pi 2*acos(0.0)
- #define F first
- #define S second
- #define EPS 1e-9
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- map<string, string> mp;
- map<string, string> ::iterator it;
- map<string, ll>idx;
- vector<string> v[105];
- bool visited[105];
- void dfs(ll s) {
- visited[s] = true;
- for(ll i = 0;i < v[s].size();++i) {
- if(visited[idx[v[s][i]]] == false)
- {
- cout << v[s][i] << endl;
- dfs(idx[v[s][i]]);
- }
- }
- }
- int main()
- {
- //freopen("testcases.txt","r",stdin);
- ll t; cin>>t;
- fr(k,t)
- {
- mem(visited);
- mp.clear();
- idx.clear();
- ll n; cin>>n;
- vector< pair<string, ll> > in;
- getchar();
- string p[105];
- idx["."] = 0;
- fr(i,n)
- {
- string s;
- getline(cin, s);
- idx[s] = i+1;
- ll space=0;
- fr(j,s.size())
- {
- if(s[j] != ' ') break;
- space++;
- }
- p[space] = s;
- if(space==0) mp[s]=".";
- else mp[s] = p[space-1];
- in.pb(mkp(s, space));
- }
- for(it=mp.begin(); it!=mp.end(); it++)
- {
- v[idx[it->S]].pb(it->F);
- }
- cout << "Case "<<k+1<<":" << endl;
- dfs(0);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement