/*这里将fa[]数组初始化为-1比较方便
输入格式有点坑 看的讨论
*/
1 #include "cstdio"
2 #include "iostream"
3 #include "cstring"
4 #include "vector"
5 #include "queue"
6 #include "map"
7 #include "string"
8 #include "algorithm"
9 using namespace std;
10
11 #define MAXN 222222
12 int fa[MAXN];
13 int T, n,num;
14 string a, b;
15
16 void init()
17 {
18 num = 1;
19 for (int i = 0; i <= MAXN; ++i)
20 fa[i] = -1;
21 }
22
23 int find(int x)
24 {
25 if (fa[x] < 0) return x;
26 return fa[x] = find(fa[x]);
27 }
28
29 void merg(int a, int b)
30 {
31 int x = find(a);
32 int y = find(b);
33 if (x < y) {
34 fa[x] += fa[y];
35 fa[y] = x;
36 cout << -fa[x] << endl;
37 }
38 else if (x > y) {
39 fa[y] += fa[x];
40 fa[x] = y;
41 cout << -fa[y] << endl;
42 }
43 //else cout << -fa[x] << endl; 加注释也可以过
44 }
45 void process()
46 {
47 cin >> n;
48 init();
49 map<string, int> s;
50 for (int i = 0; i < n; ++i) {
51 cin >> a >> b;
52 if (s[a] == 0) s[a] = num++;
53 if (s[b] == 0) s[b] = num++;
54 merg(s[a], s[b]);
55 }
56 }
57
58 int main()
59 {
60 while (cin >> T)
61 while (T--)
62 process();
63 //system("pause");
64 return 0;
65 }