QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#276752 | #7003. Rikka with Minimum Spanning Trees | ucup-team1209# | AC ✓ | 771ms | 5440kb | C++20 | 1.1kb | 2023-12-06 10:18:45 | 2023-12-06 10:18:47 |
Judging History
answer
#include<bits/stdc++.h>
using std::cin, std::cout;
using u64 = unsigned long long;
const int mod = 1e9 + 7;
u64 k1, k2;
u64 xs128() {
u64 k3 = k1, k4 = k2;
k1 = k4;
k3 ^= k3 << 23;
k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
return k2 + k4;
}
const int N = 2000005;
int n, m;
struct edge { int u, v; u64 w; };
int anc[N];
int find(int x) {
return anc[x] == x ? x : anc[x] = find(anc[x]);
}
int main() {
std::ios::sync_with_stdio(false), cin.tie(0);
int T; cin >> T;
for(int i = 0;i < T;++i) {
cin >> n >> m >> k1 >> k2;
std::vector<edge> e(m);
for(auto & [x, y, z] : e) {
x = xs128() % n + 1;
y = xs128() % n + 1;
z = xs128();
}
sort(e.begin(), e.end(), [](auto & x, auto & y) { return x.w < y.w; });
for(int i = 1;i < m;++i) {
//assert(e[i].w != e[i - 1].w);
}
for(int i = 1;i <= n;++i) anc[i] = i;
u64 sum = 0;
int cnt = 1;
for(auto [x, y, z] : e) {
if(find(x) != find(y)) {
anc[find(x)] = find(y);
sum += z % mod;
cnt += 1;
}
}
if(cnt == n) {
cout << sum % mod << '\n';
} else {
cout << 0 << '\n';
}
}
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 9ms
memory: 4664kb
input:
1 2 100000 123456789 987654321
output:
575673759
result:
ok single line: '575673759'
Test #2:
score: 0
Accepted
time: 771ms
memory: 5440kb
input:
100 17085 100000 676466090490 878574984049 24353 100000 685976930882 229685257786 4 100000 471961964055 157860429766 15406 100000 410376133349 828755231175 1 100000 809050431491 785471826497 1796 100000 218311747353 410830725634 93449 100000 761721499751 355474414706 3214 100000 277812617111 2429646...
output:
436638303 0 405150678 355979925 0 50713419 0 512195596 338362921 0 0 289558312 831627251 345103943 788519192 306890280 168133083 308823048 813378518 25758919 733644946 851485656 0 0 0 315609167 632805182 745061180 0 995073785 854970966 0 0 0 423134815 0 867689881 500810440 0 0 0 945701987 0 0 0 1959...
result:
ok 100 lines