UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#198925#2599. ysgh的车tkswls10063ms2996kbC++111.2kb2023-12-03 10:29:212023-12-03 12:11:47

answer

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int fa[200005], siz[200005], flg[200005], a[100005], n, m;
long long ans;
inline int g(int p, int q) {
	return (p - 1) * m + q;
}
struct node {
	int h, l, num;
} b[100006];
bool cmp(node p, node q) {
	return p.num < q.num;
}
inline int finds(int p) {
	return (fa[p] == p) ? p : fa[p] = finds(fa[p]);
}
inline void merge(int p, int q) {
	if (siz[p] > siz[q]) {
		fa[q] = p;
		siz[p] += siz[q];
		flg[p] |= flg[q];
	} else {
		fa[p] = q;
		siz[q] += siz[p];
		flg[q] |= flg[p];
	}
}
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[g(i, j)];
			b[g(i, j)] = node{i, j, a[g(i, j)]};
		}
	}
	sort(b + 1, b + n * m + 1, cmp);
	for (int i = 1; i <= n + m; i++) {
		fa[i] = i, siz[i] = 1;
	}
	int u, v;
	for (int i = 1; i <= n * m; i++) {
		u = finds(b[i].h), v = finds(b[i].l + n);
		if (flg[u] && flg[v]) continue;
		if (u == v && flg[u]) continue;
		if (u == v) {
			flg[u] = 1;
			ans += b[i].num;
		} else {
			ans += b[i].num;
			merge(u, v);
		}
	}
	cout << ans;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1276kb

input:

3 3
446652790 367197750 439301791
632719052 735727031 263827380
781425866 746814817 125123655

output:

2274822418

result:

ok single line: '2274822418'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1276kb

input:

5 5
704973224 223286523 185440833 391522443 71231270
755954965 323006835 3677105 890811159 500348652...

output:

1577388472

result:

ok single line: '1577388472'

Test #3:

score: 10
Accepted
time: 0ms
memory: 1276kb

input:

5 5
706172801 219946739 682115835 439659203 654106361
702641914 786757740 486606000 893635276 864854...

output:

2045477736

result:

ok single line: '2045477736'

Test #4:

score: 10
Accepted
time: 0ms
memory: 1280kb

input:

5 20
424644761 401498122 978798479 727599263 249496176 791979610 484156315 427490341 881845882 96362...

output:

3918738749

result:

ok single line: '3918738749'

Test #5:

score: 10
Accepted
time: 0ms
memory: 1276kb

input:

8 12
94906966 809163705 401492815 972035716 342151668 727945486 66475736 74081095 664139684 58772684...

output:

2376201054

result:

ok single line: '2376201054'

Test #6:

score: 10
Accepted
time: 0ms
memory: 1320kb

input:

50 50
708288313 116258534 999421377 331957777 737738408 605715051 263259419 71828794 215476805 21252...

output:

1090767607

result:

ok single line: '1090767607'

Test #7:

score: 10
Accepted
time: 1ms
memory: 1292kb

input:

30 30
709487889 112885982 422321787 380094537 246838907 552401999 727010324 481015865 218268154 8724...

output:

1126834645

result:

ok single line: '1126834645'

Test #8:

score: 10
Accepted
time: 17ms
memory: 2996kb

input:

20000 5
601961413 500964482 376759424 900291631 433034185
818335307 115252679 728477136 69394251 907...

output:

3335254892871

result:

ok single line: '3335254892871'

Test #9:

score: 10
Accepted
time: 23ms
memory: 2848kb

input:

300 333
483783421 608186772 359639944 743972978 257598049 783325645 426821531 566755525 676920766 85...

output:

2527786445

result:

ok single line: '2527786445'

Test #10:

score: 10
Accepted
time: 22ms
memory: 2840kb

input:

320 312
122459380 113245258 726089536 449890743 434479316 360590554 168991887 114573670 977139711 98...

output:

2438575800

result:

ok single line: '2438575800'

Extra Test:

score: 0
Extra Test Passed