ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#198936 | #2599. ysgh的车 | tkswls | 100 | 65ms | 2996kb | C++11 | 1.2kb | 2023-12-03 10:37:53 | 2023-12-03 12:14:10 |
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: 1280kb
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: 1ms
memory: 1316kb
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: 0ms
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: 21ms
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: 21ms
memory: 2844kb
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