Skip to content

Commit 4f5776b

Browse files
committed
Improve MinimumVertexCover test
1 parent 662c8a9 commit 4f5776b

1 file changed

Lines changed: 38 additions & 6 deletions

File tree

stress-tests/graph/MinimumVertexCover.cpp

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,47 @@ vi coverHK(vector<vi>& g, int n, int m) {
2525
}
2626

2727
int main() {
28-
rep(it,0,300000) {
29-
int N = rand() % 20, M = rand() % 20;
30-
int prop = rand();
28+
const int MAXN = 20;
29+
mt19937 rng(17);
30+
rep(it,0,300'000) {
31+
int N = rand() % MAXN, M = rand() % MAXN;
3132
vector<vi> gr(N);
32-
vi left(N), right(M);
33-
rep(i,0,N) rep(j,0,M) if (rand() < prop) {
34-
gr[i].push_back(j);
33+
int co = rand() % 128 < 10 ? 2 : 1;
34+
rep(_,0,co) {
35+
int prop = rand();
36+
if (max(N, M) >= 5 && rand() % 128 < 90) {
37+
prop /= max(N, M);
38+
prop *= 2;
39+
}
40+
rep(i,0,N) rep(j,0,M) if (rand() < prop) {
41+
gr[i].push_back(j);
42+
}
43+
}
44+
if (rand() % 128 < 20 && N && M) {
45+
int paths = rand() % min(N, M);
46+
vi left(N), right(M);
47+
rep(i,0,N) left[i] = i;
48+
rep(i,0,M) right[i] = i;
49+
rep(_,0,paths) {
50+
shuffle(all(left), rng);
51+
shuffle(all(right), rng);
52+
int len = rand() % min(N, M) + 1;
53+
if (rand() & 128) gr[left[0]].push_back(right[0]);
54+
rep(i,1,len-1) {
55+
gr[left[i]].push_back(right[i-1]);
56+
gr[left[i]].push_back(right[i]);
57+
}
58+
if (len > 1 && (rand() & 128)) gr[left.back()].push_back(right.back());
59+
}
60+
}
61+
rep(i,0,N) {
62+
// Duplicate edges are okay
63+
// sort(all(gr[i]));
64+
// gr[i].erase(unique(all(gr[i])), gr[i].end());
65+
shuffle(all(gr[i]), rng);
3566
}
3667
auto verify = [&](vi& cover) {
68+
vi left(N), right(M);
3769
for(auto &x: cover) {
3870
if (x < N) left[x] = 1;
3971
else right[x - N] = 1;

0 commit comments

Comments
 (0)