Skip to content

Commit f022979

Browse files
committed
modify code
1 parent 236f26b commit f022979

File tree

4 files changed

+396
-5
lines changed

4 files changed

+396
-5
lines changed

src/class166/Code02_CheckBipartiteGraph1.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,8 @@ public static void add(int jobl, int jobr, int jobx, int joby, int l, int r, int
7979
public static void dfs(int l, int r, int i) {
8080
boolean check = true;
8181
int unionCnt = 0;
82-
for (int ei = head[i], x, y, fx, fy; ei > 0; ei = next[ei]) {
83-
x = tox[ei];
84-
y = toy[ei];
85-
fx = find(x);
86-
fy = find(y);
82+
for (int ei = head[i]; ei > 0; ei = next[ei]) {
83+
int x = tox[ei], y = toy[ei], fx = find(x), fy = find(y);
8784
if (fx == fy) {
8885
check = false;
8986
break;
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package class166;
2+
3+
// 检查二分图,C++版
4+
// 测试链接 : https://www.luogu.com.cn/problem/P5787
5+
// 如下实现是C++的版本,C++版本和java版本逻辑完全一样
6+
// 提交如下代码,可以通过所有测试用例
7+
8+
//#include <bits/stdc++.h>
9+
//
10+
//using namespace std;
11+
//
12+
//const int MAXN = 100001;
13+
//const int MAXT = 3000001;
14+
//int n, m, k;
15+
//
16+
//int father[MAXN << 1];
17+
//int siz[MAXN << 1];
18+
//int rollback[MAXN << 1][2];
19+
//int opsize = 0;
20+
//
21+
//int head[MAXN << 2];
22+
//int nxt[MAXT];
23+
//int tox[MAXT];
24+
//int toy[MAXT];
25+
//int cnt = 0;
26+
//
27+
//bool ans[MAXN];
28+
//
29+
//void addEdge(int i, int x, int y) {
30+
// nxt[++cnt] = head[i];
31+
// tox[cnt] = x;
32+
// toy[cnt] = y;
33+
// head[i] = cnt;
34+
//}
35+
//
36+
//int find(int i) {
37+
// while (i != father[i]) {
38+
// i = father[i];
39+
// }
40+
// return i;
41+
//}
42+
//
43+
//void Union(int x, int y) {
44+
// int fx = find(x);
45+
// int fy = find(y);
46+
// if (siz[fx] < siz[fy]) {
47+
// int tmp = fx;
48+
// fx = fy;
49+
// fy = tmp;
50+
// }
51+
// father[fy] = fx;
52+
// siz[fx] += siz[fy];
53+
// rollback[++opsize][0] = fx;
54+
// rollback[opsize][1] = fy;
55+
//}
56+
//
57+
//void undo() {
58+
// int fx = rollback[opsize][0];
59+
// int fy = rollback[opsize--][1];
60+
// father[fy] = fy;
61+
// siz[fx] -= siz[fy];
62+
//}
63+
//
64+
//void add(int jobl, int jobr, int jobx, int joby, int l, int r, int i) {
65+
// if (jobl <= l && r <= jobr) {
66+
// addEdge(i, jobx, joby);
67+
// } else {
68+
// int mid = (l + r) >> 1;
69+
// if (jobl <= mid) {
70+
// add(jobl, jobr, jobx, joby, l, mid, i << 1);
71+
// }
72+
// if (jobr > mid) {
73+
// add(jobl, jobr, jobx, joby, mid + 1, r, i << 1 | 1);
74+
// }
75+
// }
76+
//}
77+
//
78+
//void dfs(int l, int r, int i) {
79+
// bool check = true;
80+
// int unionCnt = 0;
81+
// for (int ei = head[i]; ei > 0; ei = nxt[ei]) {
82+
// int x = tox[ei], y = toy[ei], fx = find(x), fy = find(y);
83+
// if (fx == fy) {
84+
// check = false;
85+
// break;
86+
// } else {
87+
// Union(x, y + n);
88+
// Union(y, x + n);
89+
// unionCnt += 2;
90+
// }
91+
// }
92+
// if (check) {
93+
// if (l == r) {
94+
// ans[l] = true;
95+
// } else {
96+
// int mid = (l + r) >> 1;
97+
// dfs(l, mid, i << 1);
98+
// dfs(mid + 1, r, i << 1 | 1);
99+
// }
100+
// } else {
101+
// for (int k = l; k <= r; k++) {
102+
// ans[k] = false;
103+
// }
104+
// }
105+
// for (int k = 1; k <= unionCnt; k++) {
106+
// undo();
107+
// }
108+
//}
109+
//
110+
//int main() {
111+
// ios::sync_with_stdio(false);
112+
// cin.tie(nullptr);
113+
// cin >> n >> m >> k;
114+
// for (int i = 1; i <= n * 2; i++) {
115+
// father[i] = i;
116+
// siz[i] = 1;
117+
// }
118+
// for (int i = 1, x, y, l, r; i <= m; i++) {
119+
// cin >> x >> y >> l >> r;
120+
// add(l + 1, r, x, y, 1, k, 1);
121+
// }
122+
// dfs(1, k, 1);
123+
// for (int i = 1; i <= k; i++) {
124+
// if (ans[i]) {
125+
// cout << "Yes" << "\n";
126+
// } else {
127+
// cout << "No" << "\n";
128+
// }
129+
// }
130+
// return 0;
131+
//}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package class166;
2+
3+
// 最小mex生成树,C++版
4+
// 测试链接 : https://www.luogu.com.cn/problem/P5631
5+
// 如下实现是C++的版本,C++版本和java版本逻辑完全一样
6+
// 提交如下代码,可以通过所有测试用例
7+
8+
//#include <bits/stdc++.h>
9+
//
10+
//using namespace std;
11+
//
12+
//const int MAXN = 1000001;
13+
//const int MAXV = 100001;
14+
//const int MAXT = 30000001;
15+
//
16+
//int n, m, v;
17+
//
18+
//int father[MAXN];
19+
//int siz[MAXN];
20+
//int rollback[MAXN][2];
21+
//int opsize = 0;
22+
//
23+
//int head[MAXV << 2];
24+
//int nxt[MAXT];
25+
//int tox[MAXT];
26+
//int toy[MAXT];
27+
//int cnt = 0;
28+
//
29+
//int part;
30+
//
31+
//void addEdge(int i, int x, int y) {
32+
// nxt[++cnt] = head[i];
33+
// tox[cnt] = x;
34+
// toy[cnt] = y;
35+
// head[i] = cnt;
36+
//}
37+
//
38+
//int find(int i) {
39+
// while (i != father[i]) {
40+
// i = father[i];
41+
// }
42+
// return i;
43+
//}
44+
//
45+
//void Union(int x, int y) {
46+
// int fx = find(x);
47+
// int fy = find(y);
48+
// if (siz[fx] < siz[fy]) {
49+
// int tmp = fx;
50+
// fx = fy;
51+
// fy = tmp;
52+
// }
53+
// father[fy] = fx;
54+
// siz[fx] += siz[fy];
55+
// rollback[++opsize][0] = fx;
56+
// rollback[opsize][1] = fy;
57+
//}
58+
//
59+
//void undo() {
60+
// int fx = rollback[opsize][0];
61+
// int fy = rollback[opsize--][1];
62+
// father[fy] = fy;
63+
// siz[fx] -= siz[fy];
64+
//}
65+
//
66+
//void add(int jobl, int jobr, int jobx, int joby, int l, int r, int i) {
67+
// if (jobl <= l && r <= jobr) {
68+
// addEdge(i, jobx, joby);
69+
// } else {
70+
// int mid = (l + r) >> 1;
71+
// if (jobl <= mid) {
72+
// add(jobl, jobr, jobx, joby, l, mid, i << 1);
73+
// }
74+
// if (jobr > mid) {
75+
// add(jobl, jobr, jobx, joby, mid + 1, r, i << 1 | 1);
76+
// }
77+
// }
78+
//}
79+
//
80+
//int dfs(int l, int r, int i) {
81+
// int unionCnt = 0;
82+
// for (int ei = head[i]; ei > 0; ei = nxt[ei]) {
83+
// int fx = find(tox[ei]);
84+
// int fy = find(toy[ei]);
85+
// if (fx != fy) {
86+
// Union(fx, fy);
87+
// part--;
88+
// unionCnt++;
89+
// }
90+
// }
91+
// int ans = -1;
92+
// if (l == r) {
93+
// if (part == 1) {
94+
// ans = l;
95+
// }
96+
// } else {
97+
// int mid = (l + r) >> 1;
98+
// ans = dfs(l, mid, i << 1);
99+
// if (ans == -1) {
100+
// ans = dfs(mid + 1, r, i << 1 | 1);
101+
// }
102+
// }
103+
// for (int k = 1; k <= unionCnt; k++) {
104+
// undo();
105+
// part++;
106+
// }
107+
// return ans;
108+
//}
109+
//
110+
//int main() {
111+
// ios::sync_with_stdio(false);
112+
// cin.tie(nullptr);
113+
// cin >> n >> m;
114+
// v = MAXV;
115+
// for (int i = 1; i <= n; i++) {
116+
// father[i] = i;
117+
// siz[i] = 1;
118+
// }
119+
// for (int i = 1; i <= m; i++) {
120+
// int x, y, w;
121+
// cin >> x >> y >> w;
122+
// if (w > 0) add(0, w - 1, x, y, 0, v, 1);
123+
// add(w + 1, v, x, y, 0, v, 1);
124+
// }
125+
// part = n;
126+
// cout << dfs(0, v, 1) << '\n';
127+
// return 0;
128+
//}

0 commit comments

Comments
 (0)