QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#693299#6729. Unrooted TrieShuishui#AC ✓305ms37188kbC++141.5kb2024-10-31 15:55:312024-10-31 15:55:33

Judging History

你现在查看的是最新测评结果

  • [2024-10-31 15:55:33]
  • 评测
  • 测评结果:AC
  • 用时:305ms
  • 内存:37188kb
  • [2024-10-31 15:55:31]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define Sz(x) (int)(x).size()
#define bit(x) (1ll << (x))
using ll = long long;
using db = double;
using ull = unsigned long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vii = vector<vi>;
using vl = vector<ll>;
using vll = vector<vl>;
using vs = vector<string>;
using vd = vector<db>;
mt19937 mrand(time(0));

void solve(void)
{
	int n;
	cin >> n;
	vector<vector<array<int, 2>>> e(n + 2);
	for (int i = 1; i < n; i++)
	{
		int u, v;
		char c;
		cin >> u >> v >> c;
		e[u].pb({v, c - 'a'});
		e[v].pb({u, c - 'a'});
	}

	vii son(n + 2, vi(27));
	vl f(n + 2);
	function<void(int, int)> up = [&](int u, int fa)
	{
		for (auto [v, c] : e[u])
			if (v != fa)
			{
				up(v, u);
				f[u] += son[u][c];
				f[u] += f[v];
				son[u][c]++;
			}
	};

	function<void(int, int, int)> down = [&](int u, int fa, int fc)
	{
		if (u != 1)
		{
			f[u] = f[fa] - (son[fa][fc] - 1) + son[u][fc];
			son[u][fc]++;
		}
		for (auto [v, c] : e[u])
			if (v != fa)
				down(v, u, c);
	};
	up(1, 0);

	// cerr << son[3][0] << "\n";
	down(1, 0, 0);
	int ans = 0;
	for (int i = 1; i <= n; i++)
		ans += f[i] == 0;
	cout << ans << "\n";
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	// cout << fixed << setprecision(10);

	int T = 1;
	cin >> T;
	for (int i = 1; i <= T; i++)
	solve();

	return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3680kb

input:

2
6
3 1 a
3 2 a
3 4 b
4 5 c
4 6 d
6
3 1 a
3 2 a
3 4 b
5 4 c
6 4 c

output:

2
0

result:

ok 2 number(s): "2 0"

Test #2:

score: 0
Accepted
time: 305ms
memory: 37188kb

input:

1112
19
15 18 a
7 18 c
11 14 b
10 17 b
8 14 a
1 3 b
12 2 a
16 3 c
16 4 b
2 3 a
15 5 a
3 18 d
16 9 a
18 13 b
8 4 b
17 7 a
9 6 a
13 19 a
52
8 32 a
14 51 a
30 52 a
48 36 b
27 39 c
39 51 b
35 15 a
51 52 d
45 51 e
39 26 a
20 12 b
34 18 a
9 12 e
25 5 a
9 13 b
41 51 c
1 52 n
33 14 c
22 30 b
17 4 b
12 52 c
...

output:

15
49
22
68
34
17
28
27
3
4
34
70
37
39
19
24
58
8
16
14
10
73
73
65
35
45
33
81
46
35
78
49
22
13
26
10
33
48
47
3
9
50
8
37
15
84
23
75
26
35
35
61
65
58
30
56
11
8
39
60
88
40
56
17
42
62
12
11
2
59
22
54
14
91
87
1
80
11
45
69
80
33
87
46
56
62
54
80
7
4
48
20
55
19
9
4
38
39
89
35
63
46
24
7
52...

result:

ok 1112 numbers