Skip to content

Commit 7b3c45e

Browse files
committed
modify code
1 parent 8cf546a commit 7b3c45e

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed

src/class183/Code04_CloseVertices1.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ public class Code04_CloseVertices1 {
3232

3333
public static int[] tree = new int[MAXN];
3434

35+
public static void sort(int l, int r) {
36+
if (l >= r) return;
37+
int i = l, j = r, pivot = disArr[(l + r) >> 1], tmp;
38+
while (i <= j) {
39+
while (disArr[i] < pivot) i++;
40+
while (disArr[j] > pivot) j--;
41+
if (i <= j) {
42+
tmp = disArr[i]; disArr[i] = disArr[j]; disArr[j] = tmp;
43+
tmp = depArr[i]; depArr[i] = depArr[j]; depArr[j] = tmp;
44+
i++; j--;
45+
}
46+
}
47+
sort(l, j);
48+
sort(i, r);
49+
}
50+
3551
public static void addEdge(int u, int v, int w) {
3652
nxt[++cntg] = head[u];
3753
to[cntg] = v;
@@ -90,22 +106,6 @@ public static void dfs(int u, int fa, int dis, int dep) {
90106
}
91107
}
92108

93-
public static void sort(int l, int r) {
94-
if (l >= r) return;
95-
int i = l, j = r, pivot = disArr[(l + r) >> 1], tmp;
96-
while (i <= j) {
97-
while (disArr[i] < pivot) i++;
98-
while (disArr[j] > pivot) j--;
99-
if (i <= j) {
100-
tmp = disArr[i]; disArr[i] = disArr[j]; disArr[j] = tmp;
101-
tmp = depArr[i]; depArr[i] = depArr[j]; depArr[j] = tmp;
102-
i++; j--;
103-
}
104-
}
105-
sort(l, j);
106-
sort(i, r);
107-
}
108-
109109
public static long calc(int u, int dis, int dep) {
110110
cnta = 0;
111111
dfs(u, 0, dis, dep);

src/class183/Code05_Message1.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class Code05_Message1 {
3131
public static int centroid;
3232

3333
public static int[] depCnt = new int[MAXN];
34-
public static int maxDeep;
34+
public static int maxDep;
3535

3636
public static int[] timArr = new int[MAXN];
3737
public static int[] qidArr = new int[MAXN];
@@ -126,19 +126,19 @@ public static void getCentroid2(int cur, int fa) {
126126
}
127127

128128
// 收集信息递归版,java会爆栈,C++可以通过
129-
public static void dfs1(int u, int fa, int deep) {
130-
depCnt[deep]++;
131-
maxDeep = Math.max(maxDeep, deep);
129+
public static void dfs1(int u, int fa, int dep) {
130+
depCnt[dep]++;
131+
maxDep = Math.max(maxDep, dep);
132132
for (int e = headq[u]; e > 0; e = nextq[e]) {
133-
if (tim[e] + 1 >= deep) {
134-
timArr[++cnta] = tim[e] - deep + 2;
133+
if (tim[e] + 1 >= dep) {
134+
timArr[++cnta] = tim[e] - dep + 2;
135135
qidArr[cnta] = qid[e];
136136
}
137137
}
138138
for (int e = headg[u]; e > 0; e = nextg[e]) {
139139
int v = tog[e];
140140
if (v != fa && !vis[v]) {
141-
dfs1(v, u, deep + 1);
141+
dfs1(v, u, dep + 1);
142142
}
143143
}
144144
}
@@ -151,7 +151,7 @@ public static void dfs2(int cur, int fa, int deep) {
151151
pop();
152152
if (e == -1) {
153153
depCnt[dep]++;
154-
maxDeep = Math.max(maxDeep, dep);
154+
maxDep = Math.max(maxDep, dep);
155155
for (int e = headq[u]; e > 0; e = nextq[e]) {
156156
if (tim[e] + 1 >= dep) {
157157
timArr[++cnta] = tim[e] - dep + 2;
@@ -174,26 +174,26 @@ public static void dfs2(int cur, int fa, int deep) {
174174

175175
public static void calc(int u) {
176176
cnta = 0;
177-
maxDeep = 0;
177+
maxDep = 0;
178178
// dfs1(u, 0, 1);
179179
dfs2(u, 0, 1);
180180
for (int i = 1; i <= cnta; i++) {
181181
ans[qidArr[i]] += depCnt[timArr[i]];
182182
}
183-
for (int d = 1; d <= maxDeep; d++) {
183+
for (int d = 1; d <= maxDep; d++) {
184184
depCnt[d] = 0;
185185
}
186186
for (int e = headg[u]; e > 0; e = nextg[e]) {
187187
int v = tog[e];
188188
if (!vis[v]) {
189189
cnta = 0;
190-
maxDeep = 0;
190+
maxDep = 0;
191191
// dfs1(v, u, 2);
192192
dfs2(v, u, 2);
193193
for (int i = 1; i <= cnta; i++) {
194194
ans[qidArr[i]] -= depCnt[timArr[i]];
195195
}
196-
for (int d = 1; d <= maxDeep; d++) {
196+
for (int d = 1; d <= maxDep; d++) {
197197
depCnt[d] = 0;
198198
}
199199
}

src/class183/Code07_Maschera1.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,22 @@ public static void pop() {
5959
e = stack[stacksize][4];
6060
}
6161

62+
public static void sort(int[] maxv, int[] edge, int l, int r) {
63+
if (l >= r) return;
64+
int i = l, j = r, pivot = maxv[(l + r) >> 1], tmp;
65+
while (i <= j) {
66+
while (maxv[i] < pivot) i++;
67+
while (maxv[j] > pivot) j--;
68+
if (i <= j) {
69+
tmp = maxv[i]; maxv[i] = maxv[j]; maxv[j] = tmp;
70+
tmp = edge[i]; edge[i] = edge[j]; edge[j] = tmp;
71+
i++; j--;
72+
}
73+
}
74+
sort(maxv, edge, l, j);
75+
sort(maxv, edge, i, r);
76+
}
77+
6278
public static void addEdge(int u, int v, int w) {
6379
nxt[++cntg] = head[u];
6480
to[cntg] = v;
@@ -180,22 +196,6 @@ public static void dfs2(int cur, int fa, int pmaxv, int pedge) {
180196
}
181197
}
182198

183-
public static void sort(int[] maxv, int[] edge, int l, int r) {
184-
if (l >= r) return;
185-
int i = l, j = r, pivot = maxv[(l + r) >> 1], tmp;
186-
while (i <= j) {
187-
while (maxv[i] < pivot) i++;
188-
while (maxv[j] > pivot) j--;
189-
if (i <= j) {
190-
tmp = maxv[i]; maxv[i] = maxv[j]; maxv[j] = tmp;
191-
tmp = edge[i]; edge[i] = edge[j]; edge[j] = tmp;
192-
i++; j--;
193-
}
194-
}
195-
sort(maxv, edge, l, j);
196-
sort(maxv, edge, i, r);
197-
}
198-
199199
public static void calc(int u) {
200200
cnta = 0;
201201
for (int e = head[u]; e > 0; e = nxt[e]) {

0 commit comments

Comments
 (0)