QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#276752#7003. Rikka with Minimum Spanning Treesucup-team1209#AC ✓771ms5440kbC++201.1kb2023-12-06 10:18:452023-12-06 10:18:47

Judging History

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

  • [2023-12-06 10:18:47]
  • 评测
  • 测评结果:AC
  • 用时:771ms
  • 内存:5440kb
  • [2023-12-06 10:18:45]
  • 提交

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,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

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