QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#72389#5023. 【模板】树链剖分He_Ren100 ✓585ms93952kbC++237.3kb2023-01-15 15:15:002023-01-15 15:16:51

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-15 15:16:51]
  • Judged
  • Verdict: 100
  • Time: 585ms
  • Memory: 93952kb
  • [2023-01-15 15:15:00]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int MAXN = 2e5 + 5;
const int mod = 998244353;

inline void add_mod(int &a,int b){ a+=b; if(a>=mod) a-=mod;}

struct BIT
{
	int tree[MAXN], n;
	#define lowbit(x) ((x)&-(x))
	void init(int _n)
	{
		n = _n;
		fill(tree+1, tree+n+1, 0);
	}
	void update(int x,int k)
	{
		while(x<=n)
			add_mod(tree[x], k), x += lowbit(x);
	}
	void update(int l,int r,int k)
	{
		if(l>r) return;
		update(l,k); update(r+1, mod-k);
	}
	int query(int x)
	{
		int res = 0;
		while(x)
			add_mod(res, tree[x]), x ^= lowbit(x);
		return res;
	}
	int query(int l,int r)
	{
		if(l>r) return 0;
		return (query(r)-query(l-1)+mod) %mod;
	}
};

int n,m;
vector<int> g[MAXN];

int anc[MAXN], siz[MAXN], dep[MAXN], son[MAXN];
void dfs_tree(int u,int fa)
{
	siz[u] = 1; son[u] = 0;
	for(int v: g[u]) if(v != fa)
	{
		anc[v] = u; dep[v] = dep[u] + 1;
		dfs_tree(v,u);
		siz[u] += siz[v];
		if(siz[v] > siz[son[u]]) son[u] = v;
	}
}
int dfn[MAXN], seq[MAXN], curdfn = 0, top[MAXN];
void dfs_dfn(int u,int fa,int tp)
{
	top[u] = tp; dfn[u] = ++curdfn; seq[curdfn] = u;
	if(son[u]) dfs_dfn(son[u], u, tp);
	for(int v: g[u]) if(v != fa && v != son[u])
		dfs_dfn(v, u, v);
}
int lca(int u,int v)
{
	while(top[u] != top[v]) dep[top[u]] > dep[top[v]]? u = anc[top[u]]: v = anc[top[v]];
	return dep[u] < dep[v]? u: v;
}

int todep(int u,int k)
{
	while(dep[u] > k)
		u = dep[top[u]] > k? anc[top[u]]: seq[dfn[u] - (dep[u] - k)];
	return u;
}
int getnear(int u,int v) // u -> v
{
	assert(u != v);
	if(dfn[v] <= dfn[u] && dfn[u] <= dfn[v] + siz[v] - 1)
		return todep(u, dep[v] + 1);
	else
		return anc[v];
}
int get_rotate_siz(int u,int v)
{
	assert(u != v);
	v = getnear(v, u);
	if(v == anc[u])
		return siz[u];
	else
		return n - siz[v];
}
bool insub(int u,int v)
{
	return dfn[v] <= dfn[u] && dfn[u] <= dfn[v] + siz[v] - 1;
}

namespace P1
{
	vector<int> h[MAXN];
	
	void add_path(int u,int v)
	{
		h[u].emplace_back(v);
		h[v].emplace_back(u);
	}
	
	int val[MAXN];
	void dfs_val(int u,int fa)
	{
		for(int v: g[u]) if(v != fa)
			dfs_val(v, u);
		
		val[u] = n;
		int cur = n - siz[u];
		for(int v: g[u]) if(v != fa)
		{
			val[u] = (val[u] + (ll)cur * siz[v]) %mod;
			cur += siz[v];
		}
	}
	
	int tim[MAXN], curtim = 0;
	bool iskey[MAXN];
	vector<int> tr[MAXN];
	void new_Node(int u)
	{
		if(tim[u] != curtim)
		{
			tim[u] = curtim;
			iskey[u] = 0;
			tr[u].clear();
		}
	}
	void add_edge(int u,int v)
	{
		tr[u].emplace_back(v);
		tr[v].emplace_back(u);
	}
	
	void build_tr(vector<int> vec)
	{
		sort(vec.begin(), vec.end(), [&] (int x,int y){
			return dfn[x] < dfn[y];
		});
		
		static int sta[MAXN];
		int tp = 0;
		++curtim;
		new_Node(1); sta[++tp] = 1;
		for(int u: vec)
		{
			int v = lca(u, sta[tp]); --tp;
			new_Node(u); new_Node(v);
			while(dep[sta[tp]] >= dep[v]) add_edge(sta[tp], sta[tp+1]), --tp;
			if(sta[tp+1] != v) add_edge(sta[tp+1], v);
			sta[++tp] = v;
			if(u != v) sta[++tp] = u;
		}
		while(--tp) add_edge(sta[tp+1], sta[tp]);
		for(int u: vec)
			iskey[u] = 1;
	}
	
	int ans = 0;
	
	int f[MAXN], trsiz[MAXN], tranc[MAXN];
	void dfs(int u,int fa,int rt,int rtsonsiz)
	{
		tranc[u] = fa;
		f[u] = 0; trsiz[u] = get_rotate_siz(u, rt);
		for(int v: tr[u]) if(v != fa)
		{
			dfs(v,u,rt,rtsonsiz);
			ans = (ans + (ll)f[u] * f[v]) %mod;
			if(iskey[u])
			{
				int x = getnear(v, u);//, sizx = get_rotate_siz(x, u);
				if(x != v)
				{
					int y = getnear(v, x), sizy = get_rotate_siz(y, u);
					ans = (ans + (ll)f[v] * (rtsonsiz - sizy + mod)) %mod;
				}
				else
				{
					for(int w: tr[v]) if(w != u)
					{
						int y = getnear(w, x), sizy = get_rotate_siz(y, u);
						ans = (ans + (ll)f[w] * (rtsonsiz - sizy + mod)) %mod;
					}
					if(iskey[v])
					{
						ans = (ans + (ll)val[v] - (ll)trsiz[v] * (n - rtsonsiz)) %mod;
						ans = (ans + mod) %mod;
					}
				}
			}
			add_mod(f[u], f[v]);
		}
		if(iskey[u]) add_mod(f[u], trsiz[u]);
	}
	
	void getres(int rt)
	{
		if(!h[rt].size()) return;
		vector<int> vec = h[rt]; vec.emplace_back(rt);
		build_tr(vec);
		
		for(int v: tr[rt])
			dfs(v, rt, rt, n - get_rotate_siz(rt, v));
	}
	
	int solve(void)
	{
		dfs_val(1,0);
		for(int i=1; i<=n; ++i)
			getres(i);
		return ans;
	}
}

namespace P2
{
	vector<pii> h[MAXN];
	
	void add_path(int u,int v)
	{
		int uv = lca(u,v);
		h[uv].emplace_back(u,v);
	}
	
	int ans = 0;
	BIT tree1, tree2, tree3, tree4;
	
	int f[MAXN];
	
	void dfs(int u,int fa)
	{
		vector<int> ch;
		for(int v: g[u]) if(v != fa)
			dfs(v, u), ch.emplace_back(v);
		
		vector<int> A;
		vector<pii> B;
		for(auto t: h[u])
		{
			int x = t.first, y = t.second;
			if(y == u) swap(x, y);
			if(x == u) A.emplace_back(y);
			else
			{
				if(dfn[x] > dfn[y]) swap(x, y);
				B.emplace_back(x, y);
			}
		}
		sort(B.begin(), B.end(), [&] (const pii &x,const pii &y){
			return dfn[x.second] < dfn[y.second];
		});
		
		for(int v: ch)
		{
			ans = (ans + (ll)f[u] * f[v]) %mod;
			add_mod(f[u], f[v]);
		}
		for(int x: A)
		{
			add_mod(f[u], siz[x]);
		}
		
		auto query = [&] (int x) -> ll
		{
			return (
				(ll)siz[x] * (tree1.query(dfn[anc[x]]) - tree1.query(dfn[u]) + mod)
				+ tree2.query(dfn[x], dfn[x] + siz[x] - 1)
			) %mod;
		};
		auto update = [&] (int x)
		{
			tree1.update(dfn[x], dfn[x] + siz[x] - 1, 1);
			tree2.update(dfn[x], siz[x]);
		};
		
		auto query34 = [&] (int x) -> ll
		{
			return (
				(ll)siz[x] * (tree3.query(dfn[anc[x]]) - tree3.query(dfn[u]) + mod)
				+ tree4.query(dfn[x], dfn[x] + siz[x] - 1)
			) %mod;
		};
		auto update34 = [&] (int x,int k)
		{
			tree3.update(dfn[x], dfn[x] + siz[x] - 1, k);
			tree4.update(dfn[x], (ll)siz[x] * k %mod);
		};
		
		for(int x: A)
		{
			int v = getnear(x, u);
			ans = (ans + (ll)query(x) * (n - siz[v])) %mod;
			ans = (ans + (ll)siz[x] * (tree2.query(dfn[u], dfn[u] + siz[u] - 1)
				- tree2.query(dfn[v], dfn[v] + siz[v] - 1) + mod)) %mod;
			update(x);
		}
		
		for(auto it: B)
		{
			int x = it.first, y = it.second;
			ans = (ans + (ll)query(x) * siz[y]) %mod;
			ans = (ans + (ll)query(y) * siz[x]) %mod;
		}
		
		static pii sta[MAXN];
		int tp = 0;
		for(auto it: B)
		{
			int x = it.second, y = it.first;
			while(tp && !insub(x, sta[tp].first))
			{
				update34(sta[tp].second, mod-1);
				--tp;
			}
			ans = (ans + (ll)siz[x] * query34(y)) %mod;
			sta[++tp] = {x, y};
			update34(y, 1);
		}
		while(tp)
		{
			update34(sta[tp].second, mod-1);
			--tp;
		}
	}
	
	int solve(void)
	{
		tree1.init(n);
		tree2.init(n);
		tree3.init(n);
		tree4.init(n);
		dfs(1,0);
		return ans;
	}
}

int main(void)
{
	int testid;
	scanf("%d%d%d",&testid,&n,&m);
	for(int i=1; i<n; ++i)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		g[u].emplace_back(v);
		g[v].emplace_back(u);
	}
	
	dep[0] = -1;
	dfs_tree(1,0);
	dfs_dfn(1,0,1);
	
	for(int i=1; i<=m; ++i)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		P1 :: add_path(u,v);
		P2 :: add_path(u,v);
	}
	
	int ans = 0;
	add_mod(ans, P1 :: solve());
	add_mod(ans, P2 :: solve());
	
	ans = ans * 2ll %mod;
	ans = (ans + (ll)n * (n+1) / 2 %mod * m) %mod;
	printf("%d\n",ans);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 1
Accepted

Test #1:

score: 1
Accepted
time: 1ms
memory: 34428kb

input:

0
100 100
95 73
73 97
97 31
31 29
29 56
56 37
37 80
80 53
53 26
26 81
81 27
27 44
44 12
12 59
59 39
39 89
89 40
40 23
23 35
35 11
11 30
30 47
47 19
19 57
57 87
87 71
71 20
20 84
84 61
61 68
68 79
79 75
75 74
74 1
1 8
8 94
94 50
50 100
100 4
4 92
92 46
46 38
38 14
14 54
54 36
36 76
76 45
45 49
49 93
...

output:

4035970

result:

ok 1 number(s): "4035970"

Test #2:

score: 0
Accepted
time: 1ms
memory: 34316kb

input:

0
14 91
5 12
12 2
2 4
4 1
1 8
8 14
14 11
11 9
9 10
10 6
6 7
7 13
13 3
12 11
1 14
7 4
8 4
5 2
9 4
7 12
8 14
2 13
13 12
13 5
14 6
9 13
13 10
13 14
8 1
8 10
8 3
7 2
13 3
14 9
13 11
12 5
3 12
11 7
11 6
10 9
11 10
14 12
12 6
12 1
1 13
14 5
1 11
2 14
11 4
14 4
3 4
3 1
10 6
5 9
1 4
8 2
9 12
3 10
9 7
1 9
10...

output:

106743

result:

ok 1 number(s): "106743"

Test #3:

score: 0
Accepted
time: 3ms
memory: 36296kb

input:

0
30 100
2 24
24 8
8 7
7 13
13 20
20 21
21 25
25 14
14 6
6 27
27 10
10 9
9 30
30 19
19 18
18 3
3 1
1 26
26 17
17 11
11 28
28 15
15 29
29 23
23 16
16 5
5 22
22 12
12 4
5 3
28 19
10 7
18 13
17 6
3 1
30 23
19 22
10 29
27 28
16 8
6 8
12 2
16 7
10 2
18 25
19 21
10 27
22 20
27 6
6 1
23 18
3 19
13 20
21 3
...

output:

463634

result:

ok 1 number(s): "463634"

Subtask #2:

score: 2
Accepted

Dependency #1:

100%
Accepted

Test #4:

score: 2
Accepted
time: 4ms
memory: 36472kb

input:

1
500 500
5 278
278 353
353 248
248 100
100 200
200 215
215 112
112 488
488 301
301 443
443 283
283 2
2 470
470 176
176 368
368 375
375 206
206 73
73 275
275 340
340 26
26 348
348 302
302 242
242 53
53 398
398 385
385 91
91 224
224 181
181 12
12 44
44 122
122 142
142 419
419 78
78 319
319 58
58 425
...

output:

382603176

result:

ok 1 number(s): "382603176"

Subtask #3:

score: 3
Accepted

Dependency #2:

100%
Accepted

Test #5:

score: 3
Accepted
time: 1ms
memory: 32772kb

input:

2
1557 1557
1080 601
601 487
487 1154
1154 1534
1534 1187
1187 1227
1227 901
901 167
167 1373
1373 533
533 194
194 777
777 671
671 1445
1445 479
479 353
353 640
640 731
731 403
403 1367
1367 1366
1366 582
582 175
175 4
4 596
596 1460
1460 785
785 183
183 1000
1000 444
444 1313
1313 537
537 360
360 1...

output:

264568106

result:

ok 1 number(s): "264568106"

Subtask #4:

score: 7
Accepted

Dependency #3:

100%
Accepted

Test #6:

score: 7
Accepted
time: 155ms
memory: 62780kb

input:

3
85500 85500
17180 10968
10968 12437
12437 24753
24753 35527
35527 34441
34441 49901
49901 35625
35625 68184
68184 928
928 73019
73019 26107
26107 61115
61115 59641
59641 3044
3044 23463
23463 59051
59051 73646
73646 81259
81259 59627
59627 64724
64724 85477
85477 43575
43575 38154
38154 14858
1485...

output:

576394657

result:

ok 1 number(s): "576394657"

Subtask #5:

score: 7
Accepted

Dependency #4:

100%
Accepted

Test #7:

score: 7
Accepted
time: 422ms
memory: 90320kb

input:

4
200000 200000
107385 106532
106532 139267
139267 75515
75515 25720
25720 24045
24045 88414
88414 193814
193814 123507
123507 35305
35305 41501
41501 12108
12108 67481
67481 37044
37044 157151
157151 157723
157723 23250
23250 28686
28686 197119
197119 139640
139640 55472
55472 38867
38867 93298
932...

output:

921223503

result:

ok 1 number(s): "921223503"

Test #8:

score: 0
Accepted
time: 473ms
memory: 93952kb

input:

4
200000 200000
194895 22791
22791 9432
9432 153272
153272 69481
69481 178657
178657 13909
13909 103964
103964 78333
78333 154996
154996 94790
94790 102367
102367 117961
117961 110698
110698 118199
118199 85856
85856 129683
129683 145302
145302 125290
125290 6301
6301 146628
146628 95218
95218 15666...

output:

665557576

result:

ok 1 number(s): "665557576"

Test #9:

score: 0
Accepted
time: 86ms
memory: 42820kb

input:

4
666 200000
44 218
218 442
442 45
45 437
437 326
326 419
419 281
281 662
662 31
31 126
126 568
568 170
170 525
525 77
77 617
617 473
473 125
125 497
497 273
273 368
368 156
156 211
211 561
561 353
353 631
631 292
292 300
300 583
583 556
556 472
472 424
424 110
110 474
474 335
335 64
64 489
489 547
...

output:

592638256

result:

ok 1 number(s): "592638256"

Subtask #6:

score: 1
Accepted

Test #10:

score: 1
Accepted
time: 1ms
memory: 36376kb

input:

5
100 100
69 40
69 12
69 43
69 94
69 36
69 58
69 76
69 91
69 20
69 68
69 79
69 26
69 34
69 90
69 66
69 23
69 18
69 15
69 16
69 3
69 72
69 55
69 85
69 11
69 74
69 46
69 41
69 52
69 4
69 45
69 2
69 54
69 38
69 78
69 61
69 57
69 22
69 87
69 82
69 30
69 28
69 47
69 33
69 17
69 21
69 98
69 10
69 56
69 93...

output:

507958

result:

ok 1 number(s): "507958"

Test #11:

score: 0
Accepted
time: 3ms
memory: 36340kb

input:

5
14 91
7 10
7 5
7 13
7 2
7 3
7 4
7 1
7 6
7 11
7 8
7 14
7 12
7 9
11 9
7 4
11 6
13 14
1 2
1 5
14 1
6 5
6 14
3 1
12 3
10 8
4 3
12 9
13 4
11 3
6 7
8 5
14 2
8 11
5 13
13 2
10 11
10 9
3 14
1 12
3 13
2 12
11 1
11 7
11 2
7 10
6 8
10 6
2 4
1 6
4 5
13 1
7 3
8 14
1 9
4 12
4 10
9 4
5 14
11 12
10 13
4 8
10 2
2 ...

output:

15795

result:

ok 1 number(s): "15795"

Test #12:

score: 0
Accepted
time: 1ms
memory: 36336kb

input:

5
30 100
12 22
12 19
12 25
12 28
12 10
12 26
12 4
12 27
12 14
12 24
12 5
12 16
12 1
12 9
12 13
12 7
12 11
12 17
12 8
12 23
12 3
12 29
12 21
12 20
12 15
12 18
12 6
12 2
12 30
3 28
29 19
4 25
21 7
21 15
17 1
6 9
7 5
8 28
8 17
2 20
2 19
26 13
22 12
1 26
8 27
5 20
21 20
10 27
26 27
10 15
4 2
19 1
1 28
2...

output:

50056

result:

ok 1 number(s): "50056"

Subtask #7:

score: 2
Accepted

Dependency #6:

100%
Accepted

Test #13:

score: 2
Accepted
time: 4ms
memory: 36400kb

input:

6
500 500
292 110
292 127
292 97
292 376
292 129
292 30
292 469
292 431
292 466
292 191
292 37
292 405
292 404
292 100
292 313
292 205
292 361
292 451
292 363
292 498
292 130
292 287
292 94
292 106
292 399
292 116
292 54
292 476
292 279
292 435
292 68
292 368
292 278
292 104
292 200
292 444
292 293
...

output:

62638426

result:

ok 1 number(s): "62638426"

Subtask #8:

score: 3
Accepted

Dependency #7:

100%
Accepted

Test #14:

score: 3
Accepted
time: 3ms
memory: 36536kb

input:

7
1557 1557
903 188
903 1160
903 861
903 872
903 790
903 833
903 532
903 1392
903 1086
903 1170
903 506
903 1191
903 862
903 920
903 167
903 1148
903 225
903 182
903 204
903 91
903 493
903 1404
903 1247
903 223
903 185
903 183
903 723
903 784
903 632
903 341
903 1087
903 648
903 419
903 523
903 551
...

output:

890490730

result:

ok 1 number(s): "890490730"

Subtask #9:

score: 4
Accepted

Dependency #8:

100%
Accepted

Test #15:

score: 4
Accepted
time: 116ms
memory: 45640kb

input:

8
85500 85500
48607 41031
48607 31313
48607 60705
48607 49825
48607 18510
48607 10387
48607 75638
48607 16397
48607 41702
48607 53599
48607 64693
48607 57230
48607 69314
48607 47178
48607 68008
48607 10100
48607 55170
48607 29094
48607 21752
48607 3826
48607 42871
48607 20124
48607 24116
48607 47700...

output:

847993718

result:

ok 1 number(s): "847993718"

Subtask #10:

score: 4
Accepted

Dependency #9:

100%
Accepted

Test #16:

score: 4
Accepted
time: 297ms
memory: 58000kb

input:

9
200000 200000
87700 58059
87700 59169
87700 156127
87700 56736
87700 83047
87700 113585
87700 77319
87700 174624
87700 25900
87700 4230
87700 151960
87700 119248
87700 150232
87700 72119
87700 168599
87700 177594
87700 184589
87700 65142
87700 108930
87700 185024
87700 189477
87700 36270
87700 125...

output:

496496457

result:

ok 1 number(s): "496496457"

Test #17:

score: 0
Accepted
time: 333ms
memory: 60420kb

input:

9
200000 200000
115833 18077
115833 57426
115833 172099
115833 5672
115833 131127
115833 128256
115833 113731
115833 65837
115833 138918
115833 22038
115833 143955
115833 178091
115833 102226
115833 161602
115833 112929
115833 152144
115833 128930
115833 206
115833 190531
115833 188103
115833 141951...

output:

973134772

result:

ok 1 number(s): "973134772"

Test #18:

score: 0
Accepted
time: 88ms
memory: 43560kb

input:

9
666 200000
540 187
540 121
540 182
540 208
540 330
540 249
540 47
540 491
540 166
540 32
540 425
540 605
540 130
540 493
540 184
540 78
540 457
540 178
540 632
540 240
540 411
540 278
540 310
540 589
540 479
540 407
540 353
540 649
540 385
540 617
540 497
540 161
540 444
540 492
540 282
540 123
54...

output:

220418397

result:

ok 1 number(s): "220418397"

Subtask #11:

score: 1
Accepted

Test #19:

score: 1
Accepted
time: 1ms
memory: 34316kb

input:

10
100 50
50 39
28 50
83 28
96 83
23 96
58 23
72 58
61 72
47 61
29 47
89 29
42 89
35 42
27 35
10 27
95 10
84 95
91 84
80 91
44 80
74 44
41 74
46 41
9 46
70 9
55 70
59 55
33 59
7 33
87 7
26 87
6 26
60 6
65 60
90 65
25 90
57 25
75 57
22 75
49 22
2 49
52 2
20 52
15 20
76 15
56 76
98 56
92 98
30 92
39 9...

output:

416638

result:

ok 1 number(s): "416638"

Subtask #12:

score: 2
Accepted

Dependency #11:

100%
Accepted

Test #20:

score: 2
Accepted
time: 3ms
memory: 36388kb

input:

11
500 250
301 416
301 78
416 253
416 383
78 163
78 133
253 138
253 296
383 197
383 108
163 281
163 342
133 386
133 3
138 95
138 375
296 283
296 207
197 41
197 87
108 135
108 490
281 158
281 115
342 316
342 463
386 408
386 4
3 126
3 458
95 64
95 44
375 436
375 230
283 169
283 174
207 317
207 110
41 ...

output:

31314444

result:

ok 1 number(s): "31314444"

Test #21:

score: 0
Accepted
time: 2ms
memory: 36496kb

input:

11
500 250
193 116
43 193
114 43
219 114
401 219
248 401
128 248
373 128
344 373
272 344
27 272
178 27
396 178
31 396
149 31
311 149
460 311
161 460
129 161
426 129
59 426
65 59
326 65
457 326
498 457
205 498
40 205
233 40
371 233
66 371
275 66
224 275
135 224
22 135
244 22
400 244
492 400
97 492
71...

output:

111485258

result:

ok 1 number(s): "111485258"

Subtask #13:

score: 5
Accepted

Dependency #12:

100%
Accepted

Test #22:

score: 5
Accepted
time: 5ms
memory: 36588kb

input:

12
1557 778
131 1238
131 137
1238 68
1238 514
137 1053
137 934
68 1084
68 1286
514 69
514 1134
1053 431
1053 346
934 628
934 980
1084 1394
1084 469
1286 164
1286 737
69 1121
69 170
1134 336
1134 1481
431 60
431 223
346 1411
346 693
628 656
628 206
980 863
980 458
1394 89
1394 586
469 259
469 739
164...

output:

943639446

result:

ok 1 number(s): "943639446"

Test #23:

score: 0
Accepted
time: 13ms
memory: 34748kb

input:

12
1557 778
357 1478
1545 357
232 1545
1383 232
14 1383
532 14
241 532
844 241
639 844
1071 639
6 1071
727 6
111 727
1345 111
1066 1345
829 1066
912 829
1029 912
243 1029
1262 243
1399 1262
435 1399
422 435
550 422
533 550
365 533
1298 365
167 1298
988 167
1058 988
995 1058
1346 995
1523 1346
1265 1...

output:

950433299

result:

ok 1 number(s): "950433299"

Subtask #14:

score: 7
Accepted

Dependency #13:

100%
Accepted

Test #24:

score: 7
Accepted
time: 133ms
memory: 45440kb

input:

13
85500 42750
13838 67346
13838 13214
67346 5590
67346 31096
13214 56872
13214 3380
5590 25478
5590 14540
31096 35895
31096 36208
56872 70325
56872 60068
3380 73006
3380 5833
25478 43012
25478 38254
14540 48699
14540 52429
35895 40594
35895 43677
36208 61064
36208 74617
70325 8566
70325 64247
60068...

output:

238037189

result:

ok 1 number(s): "238037189"

Test #25:

score: 0
Accepted
time: 132ms
memory: 57264kb

input:

13
85500 42750
77250 41145
222 77250
73686 222
26373 73686
664 26373
19235 664
29029 19235
46687 29029
65423 46687
56322 65423
78862 56322
21149 78862
17741 21149
81494 17741
25788 81494
23817 25788
83147 23817
34106 83147
15060 34106
9504 15060
85181 9504
35683 85181
2286 35683
5964 2286
21067 5964...

output:

918174986

result:

ok 1 number(s): "918174986"

Subtask #15:

score: 7
Accepted

Dependency #14:

100%
Accepted

Test #26:

score: 7
Accepted
time: 383ms
memory: 57488kb

input:

14
200000 100000
167815 28097
28097 160292
160292 163184
163184 1066
1066 165530
165530 45867
45867 23229
23229 135516
135516 138218
138218 48890
48890 152232
152232 153829
153829 113057
113057 37852
37852 71892
71892 174720
174720 110183
110183 96767
96767 97742
97742 57511
57511 6232
6232 136061
1...

output:

494163319

result:

ok 1 number(s): "494163319"

Test #27:

score: 0
Accepted
time: 400ms
memory: 57232kb

input:

14
200000 100000
8698 50981
8698 79774
50981 182721
50981 105579
79774 11618
79774 140458
182721 98102
182721 137646
105579 181078
105579 150984
11618 137202
11618 81073
140458 90476
140458 106180
98102 150167
98102 129805
137646 2901
137646 159240
181078 24389
181078 111486
150984 73328
150984 1322...

output:

486328103

result:

ok 1 number(s): "486328103"

Test #28:

score: 0
Accepted
time: 396ms
memory: 57308kb

input:

14
200000 100000
106924 72461
72461 153397
72461 145165
145165 193068
145165 37837
145165 163546
37837 132702
163546 143593
37837 104641
143593 88241
104641 168142
168142 157866
143593 115250
168142 177330
132702 196685
196685 114668
196685 143096
177330 148702
114668 109605
109605 195390
143096 146...

output:

555700419

result:

ok 1 number(s): "555700419"

Test #29:

score: 0
Accepted
time: 389ms
memory: 82716kb

input:

14
200000 100000
103999 106101
35332 103999
100356 35332
80124 100356
175311 80124
102562 175311
102262 102562
192881 102262
128104 192881
116094 128104
23400 116094
57559 23400
68620 57559
44837 68620
174896 44837
139565 174896
84478 139565
125161 84478
50412 125161
153960 50412
36619 153960
129851...

output:

514251012

result:

ok 1 number(s): "514251012"

Subtask #16:

score: 1
Accepted

Test #30:

score: 1
Accepted
time: 1ms
memory: 36316kb

input:

15
100 99
75 90
97 75
100 97
87 100
63 87
54 63
25 54
73 25
28 73
48 28
66 48
31 66
21 31
55 21
68 55
4 68
51 4
36 51
70 36
53 70
34 53
44 34
17 44
84 17
95 84
46 95
94 46
92 94
32 92
30 32
33 30
3 33
5 3
45 5
8 45
79 8
76 79
86 76
41 86
61 41
93 61
7 93
71 7
81 71
20 81
91 20
47 91
9 47
82 9
90 29
...

output:

5051142

result:

ok 1 number(s): "5051142"

Subtask #17:

score: 3
Accepted

Dependency #16:

100%
Accepted

Test #31:

score: 3
Accepted
time: 3ms
memory: 36388kb

input:

16
500 499
486 111
486 296
111 65
111 130
296 403
296 251
65 489
65 273
130 166
130 91
403 245
403 39
251 231
251 305
489 246
489 226
273 101
273 71
166 281
166 342
91 254
91 292
245 416
245 31
39 165
39 450
231 476
231 444
305 439
305 478
246 170
246 77
226 174
226 75
101 110
101 417
71 347
71 348
...

output:

86658082

result:

ok 1 number(s): "86658082"

Test #32:

score: 0
Accepted
time: 4ms
memory: 36488kb

input:

16
500 499
139 454
173 139
492 173
449 492
488 449
80 488
204 80
497 204
371 497
259 371
182 259
59 182
498 59
380 498
296 380
238 296
382 238
392 382
240 392
183 240
282 183
203 282
146 203
49 146
25 49
485 25
360 485
171 360
40 171
465 40
151 465
56 151
245 56
231 245
254 231
79 254
138 79
46 138
...

output:

498935422

result:

ok 1 number(s): "498935422"

Subtask #18:

score: 5
Accepted

Dependency #17:

100%
Accepted

Test #33:

score: 5
Accepted
time: 1ms
memory: 36624kb

input:

17
1557 1556
662 869
662 1145
869 1539
869 169
1145 189
1145 322
1539 628
1539 1121
169 543
169 1398
189 663
189 565
322 584
322 22
628 1346
628 208
1121 1166
1121 170
543 1486
543 1005
1398 1507
1398 374
663 1385
663 955
565 192
565 1239
584 350
584 80
22 860
22 212
1346 1223
1346 555
208 1328
208 ...

output:

241984860

result:

ok 1 number(s): "241984860"

Test #34:

score: 0
Accepted
time: 3ms
memory: 36772kb

input:

17
1557 1556
1526 1188
532 1526
1399 532
940 1399
738 940
1123 738
598 1123
339 598
895 339
442 895
1352 442
655 1352
1120 655
1214 1120
970 1214
1132 970
1242 1132
918 1242
1529 918
1514 1529
999 1514
1365 999
686 1365
287 686
148 287
1107 148
1133 1107
857 1133
963 857
142 963
912 142
1360 912
357...

output:

401528572

result:

ok 1 number(s): "401528572"

Subtask #19:

score: 4
Accepted

Dependency #18:

100%
Accepted

Test #35:

score: 4
Accepted
time: 160ms
memory: 45960kb

input:

18
85500 85499
79604 24095
79604 24414
24095 26310
24095 10552
24414 83121
24414 50832
26310 66781
26310 24233
10552 22408
10552 39003
83121 20071
83121 1456
50832 552
50832 13320
66781 81642
66781 37094
24233 45275
24233 39349
22408 30671
22408 5316
39003 31434
39003 52169
20071 4772
20071 71992
14...

output:

982577652

result:

ok 1 number(s): "982577652"

Test #36:

score: 0
Accepted
time: 171ms
memory: 52812kb

input:

18
85500 85499
52565 13607
20212 52565
59671 20212
39468 59671
32518 39468
84694 32518
52967 84694
27336 52967
45987 27336
55292 45987
49680 55292
71440 49680
42397 71440
66859 42397
78900 66859
19655 78900
82370 19655
12787 82370
69544 12787
62150 69544
34748 62150
45189 34748
31404 45189
36712 314...

output:

875399769

result:

ok 1 number(s): "875399769"

Subtask #20:

score: 5
Accepted

Dependency #19:

100%
Accepted

Test #37:

score: 5
Accepted
time: 427ms
memory: 62020kb

input:

19
200000 199999
112210 58145
58145 117706
117706 150893
150893 72189
72189 10783
10783 52500
52500 181435
181435 78824
78824 165926
165926 26206
26206 40569
40569 183244
183244 125467
125467 80960
80960 163301
163301 116393
116393 180286
180286 184558
184558 41295
41295 33033
33033 35233
35233 1390...

output:

457541131

result:

ok 1 number(s): "457541131"

Test #38:

score: 0
Accepted
time: 447ms
memory: 58508kb

input:

19
200000 199999
191112 13190
191112 21872
13190 119504
13190 155021
21872 40970
21872 194701
119504 146680
119504 139414
155021 148354
155021 39973
40970 190570
40970 184953
194701 27061
194701 52990
146680 142237
146680 139503
139414 138138
139414 107020
148354 41336
148354 125927
39973 13380
3997...

output:

267636725

result:

ok 1 number(s): "267636725"

Test #39:

score: 0
Accepted
time: 496ms
memory: 60632kb

input:

19
200000 199999
81347 153979
81347 74265
153979 63984
63984 74990
74265 105685
74990 80972
80972 124146
124146 129641
80972 11089
11089 61280
129641 137183
105685 116991
116991 106225
106225 42763
137183 15742
15742 134543
137183 28130
28130 143733
143733 151779
143733 182725
143733 72762
106225 19...

output:

682481819

result:

ok 1 number(s): "682481819"

Test #40:

score: 0
Accepted
time: 438ms
memory: 90256kb

input:

19
200000 199999
56597 95771
67800 56597
171198 67800
66036 171198
188289 66036
24901 188289
197775 24901
66774 197775
36760 66774
14450 36760
196818 14450
158437 196818
32580 158437
153573 32580
12213 153573
115956 12213
191311 115956
178561 191311
187932 178561
52645 187932
105091 52645
151678 105...

output:

232262637

result:

ok 1 number(s): "232262637"

Subtask #21:

score: 2
Accepted

Dependency #1:

100%
Accepted

Dependency #6:

100%
Accepted

Dependency #11:

100%
Accepted

Dependency #16:

100%
Accepted

Test #41:

score: 2
Accepted
time: 1ms
memory: 34308kb

input:

20
100 100
74 6
6 71
71 68
68 66
71 52
52 79
52 8
79 64
8 5
8 13
13 62
62 25
79 24
24 27
27 81
81 47
47 49
47 88
49 53
53 72
72 90
90 91
47 73
73 48
72 38
73 23
13 33
38 77
91 18
91 87
23 63
73 60
60 29
29 11
60 44
29 41
38 70
11 10
60 84
10 40
38 26
84 7
26 14
14 76
84 2
40 80
14 57
80 65
18 17
2 9...

output:

606418

result:

ok 1 number(s): "606418"

Test #42:

score: 0
Accepted
time: 1ms
memory: 36448kb

input:

20
50 100
42 47
47 2
2 46
46 7
7 5
5 48
48 1
48 41
48 9
5 36
9 37
36 20
7 22
22 50
37 13
13 29
13 18
22 35
22 8
18 19
8 43
19 32
13 21
8 30
8 33
21 25
35 24
43 16
50 23
23 27
21 49
24 17
49 34
23 38
17 31
21 44
31 10
44 15
44 45
17 4
45 6
6 28
15 12
45 3
4 11
28 40
40 26
3 14
14 39
21 18
44 49
1 11
...

output:

174600

result:

ok 1 number(s): "174600"

Subtask #22:

score: 3
Accepted

Dependency #2:

100%
Accepted

Dependency #7:

100%
Accepted

Dependency #12:

100%
Accepted

Dependency #17:

100%
Accepted

Dependency #21:

100%
Accepted

Test #43:

score: 3
Accepted
time: 5ms
memory: 34364kb

input:

21
500 500
29 65
29 316
65 249
65 283
316 199
316 390
249 66
249 246
283 322
283 221
199 28
199 179
390 453
390 368
66 353
66 386
246 447
246 423
322 93
322 198
221 454
221 323
28 345
28 265
179 334
179 335
453 202
453 88
368 25
368 375
353 196
353 8
386 220
386 456
447 471
447 117
423 373
423 321
9...

output:

63662038

result:

ok 1 number(s): "63662038"

Test #44:

score: 0
Accepted
time: 4ms
memory: 34296kb

input:

21
57 56
31 57
31 15
57 16
57 28
15 2
15 17
16 4
16 38
28 5
28 56
2 45
2 51
17 14
17 10
4 52
4 29
38 35
38 7
5 20
5 12
56 43
56 42
45 11
45 23
51 26
51 25
14 47
14 34
10 50
10 37
52 19
52 1
29 8
29 13
35 55
35 22
7 9
7 49
20 48
20 36
12 41
12 27
43 6
43 3
42 18
42 30
11 21
11 32
23 24
23 53
26 46
26...

output:

197898

result:

ok 1 number(s): "197898"

Subtask #23:

score: 3
Accepted

Dependency #3:

100%
Accepted

Dependency #8:

100%
Accepted

Dependency #13:

100%
Accepted

Dependency #18:

100%
Accepted

Dependency #22:

100%
Accepted

Test #45:

score: 3
Accepted
time: 4ms
memory: 36468kb

input:

22
1557 1557
1274 55
55 644
644 544
55 455
644 33
33 51
51 187
51 468
33 1284
1284 685
685 188
685 518
468 1318
468 416
188 27
27 907
27 512
907 1401
1401 1282
1282 594
1282 663
187 593
1401 1197
593 1005
1005 525
663 1125
1197 1191
663 370
1125 170
1125 1148
1005 1327
1148 1052
1148 945
525 688
663...

output:

897967826

result:

ok 1 number(s): "897967826"

Subtask #24:

score: 9
Accepted

Dependency #4:

100%
Accepted

Dependency #9:

100%
Accepted

Dependency #14:

100%
Accepted

Dependency #19:

100%
Accepted

Dependency #23:

100%
Accepted

Test #46:

score: 9
Accepted
time: 180ms
memory: 44396kb

input:

23
85500 85500
41282 81916
41282 22714
81916 48381
81916 53688
22714 63137
22714 28885
48381 40611
48381 56298
53688 69377
53688 63698
63137 65762
63137 84449
28885 40781
28885 46154
40611 47169
40611 65560
56298 69671
56298 58253
69377 35957
69377 36522
63698 67090
63698 62301
65762 21109
65762 442...

output:

890975219

result:

ok 1 number(s): "890975219"

Test #47:

score: 0
Accepted
time: 199ms
memory: 45016kb

input:

23
85500 85500
78066 62882
62882 75975
75975 25918
75975 49373
25918 57678
25918 75575
75575 28237
49373 10627
10627 34010
34010 5009
75575 65620
34010 159
65620 71920
10627 61911
71920 63046
63046 77174
77174 60312
77174 30228
71920 52716
60312 62163
71920 47951
47951 7544
159 10927
10927 17206
527...

output:

954803777

result:

ok 1 number(s): "954803777"

Test #48:

score: 0
Accepted
time: 48ms
memory: 38432kb

input:

23
666 85500
584 294
294 481
481 431
431 596
596 421
481 229
229 651
651 316
651 13
316 437
437 635
635 503
635 452
421 652
437 346
635 541
541 464
346 17
13 407
407 486
346 270
503 60
407 141
541 453
13 544
652 666
17 597
597 338
17 303
338 448
303 569
452 264
544 582
582 255
582 328
569 260
346 62...

output:

551968034

result:

ok 1 number(s): "551968034"

Subtask #25:

score: 9
Accepted

Dependency #5:

100%
Accepted

Dependency #10:

100%
Accepted

Dependency #15:

100%
Accepted

Dependency #20:

100%
Accepted

Dependency #24:

100%
Accepted

Test #49:

score: 9
Accepted
time: 124ms
memory: 41708kb

input:

24
666 200000
592 28
592 352
28 52
28 33
352 441
352 56
52 561
52 105
33 519
33 31
441 76
441 662
56 75
56 436
561 464
561 201
105 206
105 233
519 399
519 24
31 475
31 610
76 205
76 619
662 94
662 562
75 155
75 568
436 456
436 219
464 448
464 106
201 303
201 325
206 540
206 368
233 534
233 616
399 3...

output:

17266370

result:

ok 1 number(s): "17266370"

Test #50:

score: 0
Accepted
time: 585ms
memory: 57408kb

input:

24
200000 200000
125078 21480
21480 119020
119020 47296
21480 135
47296 32452
47296 195111
195111 123728
195111 63741
63741 68099
68099 97712
97712 32208
32208 57337
97712 94238
57337 75183
32208 142416
94238 186470
68099 123267
75183 100450
142416 158797
158797 96722
142416 114792
75183 105939
1587...

output:

465239106

result:

ok 1 number(s): "465239106"

Test #51:

score: 0
Accepted
time: 119ms
memory: 42472kb

input:

24
666 200000
155 363
320 155
582 320
223 582
639 223
23 639
284 23
248 284
453 248
167 453
83 167
644 83
278 644
263 278
550 263
631 550
1 631
516 1
389 516
217 389
489 217
650 489
538 650
113 538
17 113
468 17
422 468
488 422
627 488
364 627
252 364
642 252
189 642
536 189
659 536
214 659
632 214
...

output:

376805952

result:

ok 1 number(s): "376805952"

Test #52:

score: 0
Accepted
time: 533ms
memory: 80900kb

input:

24
200000 200000
84701 58570
65541 84701
79792 65541
53565 79792
90762 53565
117946 90762
179780 117946
107139 179780
21265 107139
69796 21265
192056 69796
180211 192056
121738 180211
137836 121738
95373 137836
177281 95373
124100 177281
12086 124100
95919 12086
21497 95919
26725 21497
118202 26725
...

output:

276728604

result:

ok 1 number(s): "276728604"

Test #53:

score: 0
Accepted
time: 107ms
memory: 43784kb

input:

24
666 200000
183 472
472 622
622 60
60 646
646 611
611 282
282 424
424 45
45 340
340 500
500 173
173 180
180 82
82 264
183 299
299 546
546 213
213 637
637 446
446 157
157 56
56 111
111 380
380 587
587 303
303 492
492 76
76 383
183 410
410 435
435 205
205 429
429 421
421 184
184 223
223 15
15 629
62...

output:

224802835

result:

ok 1 number(s): "224802835"

Test #54:

score: 0
Accepted
time: 512ms
memory: 59476kb

input:

24
200000 200000
38321 154844
154844 65046
65046 22719
22719 20686
20686 74019
74019 138700
138700 138899
138899 4329
4329 117701
117701 36588
36588 35305
35305 1474
1474 111588
111588 145550
145550 28652
28652 172161
172161 93502
93502 181663
181663 44371
44371 63228
63228 50046
50046 156245
156245...

output:

307061650

result:

ok 1 number(s): "307061650"

Test #55:

score: 0
Accepted
time: 111ms
memory: 39500kb

input:

24
666 200000
609 397
609 442
397 73
397 408
442 198
442 445
73 391
73 402
408 527
408 659
198 553
198 653
445 91
445 597
391 204
391 606
402 389
402 641
527 314
527 392
659 561
659 311
553 58
553 182
653 263
653 291
91 35
91 463
597 16
597 222
204 168
204 111
606 525
606 619
389 489
389 638
641 611...

output:

947021643

result:

ok 1 number(s): "947021643"

Test #56:

score: 0
Accepted
time: 275ms
memory: 45656kb

input:

24
56789 200000
51426 21124
21124 29834
29834 56603
56603 29872
56603 37127
29872 48178
29872 31951
37127 18279
37127 28794
31951 27855
27855 11089
11089 136
28794 34758
27855 25592
25592 32286
25592 45761
32286 33874
136 27348
27348 30186
33874 10045
10045 45664
32286 25347
25347 20391
25592 48605
...

output:

640507254

result:

ok 1 number(s): "640507254"

Test #57:

score: 0
Accepted
time: 110ms
memory: 40464kb

input:

24
666 200000
634 488
386 634
16 386
581 16
359 581
288 359
620 288
487 620
429 487
332 429
416 332
479 416
122 479
128 122
159 128
606 159
329 606
604 329
412 604
633 412
217 633
427 217
113 427
523 113
469 523
6 469
373 6
645 373
131 645
579 131
636 579
9 636
193 9
660 193
306 660
385 306
91 385
3...

output:

34177944

result:

ok 1 number(s): "34177944"

Test #58:

score: 0
Accepted
time: 434ms
memory: 85820kb

input:

24
200000 200000
54494 95899
48864 54494
9087 48864
76814 9087
100708 76814
33756 100708
31506 33756
96895 31506
39393 96895
146976 39393
135603 146976
16038 135603
110315 16038
21661 110315
147614 21661
44193 147614
136221 44193
149701 136221
167589 149701
180054 167589
127429 180054
53847 127429
4...

output:

935297177

result:

ok 1 number(s): "935297177"

Test #59:

score: 0
Accepted
time: 122ms
memory: 43504kb

input:

24
666 200000
666 287
287 62
62 256
256 235
235 18
18 137
137 329
329 627
627 467
467 420
420 370
370 264
264 255
255 227
227 427
427 457
457 447
447 402
402 323
323 292
292 646
646 261
261 32
32 352
352 95
666 119
119 366
366 591
591 200
200 365
365 298
298 486
486 656
656 303
303 190
190 573
573 1...

output:

306876928

result:

ok 1 number(s): "306876928"

Test #60:

score: 0
Accepted
time: 471ms
memory: 55972kb

input:

24
200000 200000
173123 96630
96630 9440
9440 197328
197328 65409
65409 5755
5755 110187
110187 134553
134553 25631
25631 133146
133146 27155
27155 178539
178539 8112
8112 47748
47748 181398
181398 56979
56979 180595
180595 15023
15023 5232
5232 98870
98870 164358
164358 155553
155553 103836
103836 ...

output:

414986138

result:

ok 1 number(s): "414986138"