QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#155336#7003. Rikka with Minimum Spanning TreesPetroTarnavskyi#WA 881ms6520kbC++171.8kb2023-09-01 15:56:362023-09-01 15:56:38

Judging History

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

  • [2023-09-01 15:56:38]
  • 评测
  • 测评结果:WA
  • 用时:881ms
  • 内存:6520kb
  • [2023-09-01 15:56:36]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, a, b) for (int i = (a) - 1; i >= (b); i--)
#define FILL(a, b) memset(a, b, sizeof(a))
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second

typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;

typedef unsigned long long ULL;

const int mod = 1'000'000'007;
const int MAX = 100001;

void updAdd(int& x, int val)
{
	x += val;
	if (x >= mod)
	{
		x -= mod;
	}
}

struct DSU
{
	int n;
	VI p, sz;
	void init(int _n)
	{
		n = _n;
		p.resize(n);
		iota(ALL(p), 0);
		sz.assign(n, 1);
	}
	int find(int v)
	{
		if (p[v] == v)
			return v;
		return p[v] = find(p[v]);
	}
	bool unite(int u, int v)
	{
		u = find(u);
		v = find(v);
		if (u == v)
			return false;
		if (sz[u] > sz[v])
			swap(u, v);
		p[u] = v;
		sz[v] += sz[u];
		return true;
	}
} dsu;

ULL k1, k2;

ULL xorShift128Plus()
{
	ULL k3 = k1, k4 = k2;
	k1 = k4;
	k3 ^= k3 << 23;
	k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
	return k2 + k4;
}

int n, m, u[MAX], v[MAX];
ULL w[MAX];
int idxes[MAX];

void gen()
{
	cin >> n >> m >> k1 >> k2;
	FOR(i, 0, m + 1)
	{
		u[i] = xorShift128Plus() % n + 1;
		v[i] = xorShift128Plus() % n + 1;
		w[i] = xorShift128Plus();
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		gen();
		iota(idxes, idxes + m, 0);
		sort(idxes, idxes + m, [](int i, int j) {return w[i] < w[j];});
		dsu.init(n);
		int ans = 0;
		FOR(i, 0, m)
		{
			int j = idxes[i];
			if (dsu.unite(u[j], v[j]))
				updAdd(ans, w[j] % mod);
		}
		cout << ans << "\n";
	}
	
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 7ms
memory: 5556kb

input:

1
2 100000 123456789 987654321

output:

575673759

result:

ok single line: '575673759'

Test #2:

score: -100
Wrong Answer
time: 881ms
memory: 6520kb

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
216567542
405150678
866661467
0
50713419
918381795
512195596
338362921
523426874
425841922
296920954
831627251
345103943
392985214
306890280
773356868
794821333
650696729
25758919
733644946
851485656
196406140
128088006
80292565
315609167
632805182
745061180
939817511
995073785
854970966
9...

result:

wrong answer 2nd lines differ - expected: '0', found: '216567542'