Skip to content

Commit 3ba0480

Browse files
committed
fix: update solutions to lc problem: No.2608
No.2608.Shortest Cycle in a Graph
1 parent 0cffe5d commit 3ba0480

File tree

7 files changed

+48
-33
lines changed

7 files changed

+48
-33
lines changed

solution/2600-2699/2608.Shortest Cycle in a Graph/README.md

+16-11
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,16 @@ class Solution:
9797
dist = [-1] * n
9898
dist[u] = 0
9999
q = deque([(u, -1)])
100+
ans = inf
100101
while q:
101102
u, fa = q.popleft()
102103
for v in g[u]:
103104
if dist[v] < 0:
104105
dist[v] = dist[u] + 1
105106
q.append((v, u))
106107
elif v != fa:
107-
return dist[u] + dist[v] + 1
108-
return inf
108+
ans = min(ans, dist[u] + dist[v] + 1)
109+
return ans
109110

110111
g = defaultdict(list)
111112
for u, v in edges:
@@ -187,6 +188,7 @@ class Solution {
187188
dist[u] = 0;
188189
Deque<int[]> q = new ArrayDeque<>();
189190
q.offer(new int[] {u, -1});
191+
int ans = inf;
190192
while (!q.isEmpty()) {
191193
var p = q.poll();
192194
u = p[0];
@@ -196,11 +198,11 @@ class Solution {
196198
dist[v] = dist[u] + 1;
197199
q.offer(new int[] {v, u});
198200
} else if (v != fa) {
199-
return dist[u] + dist[v] + 1;
201+
ans = Math.min(ans, dist[u] + dist[v] + 1);
200202
}
201203
}
202204
}
203-
return inf;
205+
return ans;
204206
}
205207
}
206208
```
@@ -263,6 +265,7 @@ public:
263265
dist[u] = 0;
264266
queue<pair<int, int>> q;
265267
q.emplace(u, -1);
268+
int ans = inf;
266269
while (!q.empty()) {
267270
auto p = q.front();
268271
u = p.first;
@@ -273,11 +276,11 @@ public:
273276
dist[v] = dist[u] + 1;
274277
q.emplace(v, u);
275278
} else if (v != fa) {
276-
return dist[u] + dist[v] + 1;
279+
ans = min(ans, dist[u] + dist[v] + 1);
277280
}
278281
}
279282
}
280-
return inf;
283+
return ans;
281284
};
282285
int ans = inf;
283286
for (int i = 0; i < n; ++i) {
@@ -354,6 +357,7 @@ func findShortestCycle(n int, edges [][]int) int {
354357
}
355358
dist[u] = 0
356359
q := [][2]int{{u, -1}}
360+
ans := inf
357361
for len(q) > 0 {
358362
p := q[0]
359363
u = p[0]
@@ -364,11 +368,11 @@ func findShortestCycle(n int, edges [][]int) int {
364368
dist[v] = dist[u] + 1
365369
q = append(q, [2]int{v, u})
366370
} else if v != fa {
367-
return dist[u] + dist[v] + 1
371+
ans = min(ans, dist[u]+dist[v]+1)
368372
}
369373
}
370374
}
371-
return inf
375+
return ans
372376
}
373377
ans := inf
374378
for i := 0; i < n; i++ {
@@ -439,6 +443,7 @@ function findShortestCycle(n: number, edges: number[][]): number {
439443
const dist: number[] = new Array(n).fill(-1);
440444
dist[u] = 0;
441445
const q: number[][] = [[u, -1]];
446+
let ans = inf;
442447
while (q.length) {
443448
const p = q.shift()!;
444449
u = p[0];
@@ -447,12 +452,12 @@ function findShortestCycle(n: number, edges: number[][]): number {
447452
if (dist[v] < 0) {
448453
dist[v] = dist[u] + 1;
449454
q.push([v, u]);
450-
} else if (v != fa) {
451-
return dist[u] + dist[v] + 1;
455+
} else if (v !== fa) {
456+
ans = Math.min(ans, dist[u] + dist[v] + 1);
452457
}
453458
}
454459
}
455-
return inf;
460+
return ans;
456461
};
457462
for (let i = 0; i < n; ++i) {
458463
ans = Math.min(ans, bfs(i));

solution/2600-2699/2608.Shortest Cycle in a Graph/README_EN.md

+16-11
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,16 @@ class Solution:
7575
dist = [-1] * n
7676
dist[u] = 0
7777
q = deque([(u, -1)])
78+
ans = inf
7879
while q:
7980
u, fa = q.popleft()
8081
for v in g[u]:
8182
if dist[v] < 0:
8283
dist[v] = dist[u] + 1
8384
q.append((v, u))
8485
elif v != fa:
85-
return dist[u] + dist[v] + 1
86-
return inf
86+
ans = min(ans, dist[u] + dist[v] + 1)
87+
return ans
8788

8889
g = defaultdict(list)
8990
for u, v in edges:
@@ -163,6 +164,7 @@ class Solution {
163164
dist[u] = 0;
164165
Deque<int[]> q = new ArrayDeque<>();
165166
q.offer(new int[] {u, -1});
167+
int ans = inf;
166168
while (!q.isEmpty()) {
167169
var p = q.poll();
168170
u = p[0];
@@ -172,11 +174,11 @@ class Solution {
172174
dist[v] = dist[u] + 1;
173175
q.offer(new int[] {v, u});
174176
} else if (v != fa) {
175-
return dist[u] + dist[v] + 1;
177+
ans = Math.min(ans, dist[u] + dist[v] + 1);
176178
}
177179
}
178180
}
179-
return inf;
181+
return ans;
180182
}
181183
}
182184
```
@@ -239,6 +241,7 @@ public:
239241
dist[u] = 0;
240242
queue<pair<int, int>> q;
241243
q.emplace(u, -1);
244+
int ans = inf;
242245
while (!q.empty()) {
243246
auto p = q.front();
244247
u = p.first;
@@ -249,11 +252,11 @@ public:
249252
dist[v] = dist[u] + 1;
250253
q.emplace(v, u);
251254
} else if (v != fa) {
252-
return dist[u] + dist[v] + 1;
255+
ans = min(ans, dist[u] + dist[v] + 1);
253256
}
254257
}
255258
}
256-
return inf;
259+
return ans;
257260
};
258261
int ans = inf;
259262
for (int i = 0; i < n; ++i) {
@@ -330,6 +333,7 @@ func findShortestCycle(n int, edges [][]int) int {
330333
}
331334
dist[u] = 0
332335
q := [][2]int{{u, -1}}
336+
ans := inf
333337
for len(q) > 0 {
334338
p := q[0]
335339
u = p[0]
@@ -340,11 +344,11 @@ func findShortestCycle(n int, edges [][]int) int {
340344
dist[v] = dist[u] + 1
341345
q = append(q, [2]int{v, u})
342346
} else if v != fa {
343-
return dist[u] + dist[v] + 1
347+
ans = min(ans, dist[u]+dist[v]+1)
344348
}
345349
}
346350
}
347-
return inf
351+
return ans
348352
}
349353
ans := inf
350354
for i := 0; i < n; i++ {
@@ -415,6 +419,7 @@ function findShortestCycle(n: number, edges: number[][]): number {
415419
const dist: number[] = new Array(n).fill(-1);
416420
dist[u] = 0;
417421
const q: number[][] = [[u, -1]];
422+
let ans = inf;
418423
while (q.length) {
419424
const p = q.shift()!;
420425
u = p[0];
@@ -423,12 +428,12 @@ function findShortestCycle(n: number, edges: number[][]): number {
423428
if (dist[v] < 0) {
424429
dist[v] = dist[u] + 1;
425430
q.push([v, u]);
426-
} else if (v != fa) {
427-
return dist[u] + dist[v] + 1;
431+
} else if (v !== fa) {
432+
ans = Math.min(ans, dist[u] + dist[v] + 1);
428433
}
429434
}
430435
}
431-
return inf;
436+
return ans;
432437
};
433438
for (let i = 0; i < n; ++i) {
434439
ans = Math.min(ans, bfs(i));

solution/2600-2699/2608.Shortest Cycle in a Graph/Solution.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Solution {
1414
dist[u] = 0;
1515
queue<pair<int, int>> q;
1616
q.emplace(u, -1);
17+
int ans = inf;
1718
while (!q.empty()) {
1819
auto p = q.front();
1920
u = p.first;
@@ -24,11 +25,11 @@ class Solution {
2425
dist[v] = dist[u] + 1;
2526
q.emplace(v, u);
2627
} else if (v != fa) {
27-
return dist[u] + dist[v] + 1;
28+
ans = min(ans, dist[u] + dist[v] + 1);
2829
}
2930
}
3031
}
31-
return inf;
32+
return ans;
3233
};
3334
int ans = inf;
3435
for (int i = 0; i < n; ++i) {

solution/2600-2699/2608.Shortest Cycle in a Graph/Solution.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ func findShortestCycle(n int, edges [][]int) int {
1313
}
1414
dist[u] = 0
1515
q := [][2]int{{u, -1}}
16+
ans := inf
1617
for len(q) > 0 {
1718
p := q[0]
1819
u = p[0]
@@ -23,11 +24,11 @@ func findShortestCycle(n int, edges [][]int) int {
2324
dist[v] = dist[u] + 1
2425
q = append(q, [2]int{v, u})
2526
} else if v != fa {
26-
return dist[u] + dist[v] + 1
27+
ans = min(ans, dist[u]+dist[v]+1)
2728
}
2829
}
2930
}
30-
return inf
31+
return ans
3132
}
3233
ans := inf
3334
for i := 0; i < n; i++ {

solution/2600-2699/2608.Shortest Cycle in a Graph/Solution.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ private int bfs(int u) {
2323
dist[u] = 0;
2424
Deque<int[]> q = new ArrayDeque<>();
2525
q.offer(new int[] {u, -1});
26+
int ans = inf;
2627
while (!q.isEmpty()) {
2728
var p = q.poll();
2829
u = p[0];
@@ -32,10 +33,10 @@ private int bfs(int u) {
3233
dist[v] = dist[u] + 1;
3334
q.offer(new int[] {v, u});
3435
} else if (v != fa) {
35-
return dist[u] + dist[v] + 1;
36+
ans = Math.min(ans, dist[u] + dist[v] + 1);
3637
}
3738
}
3839
}
39-
return inf;
40+
return ans;
4041
}
4142
}

solution/2600-2699/2608.Shortest Cycle in a Graph/Solution.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ def bfs(u: int) -> int:
44
dist = [-1] * n
55
dist[u] = 0
66
q = deque([(u, -1)])
7+
ans = inf
78
while q:
89
u, fa = q.popleft()
910
for v in g[u]:
1011
if dist[v] < 0:
1112
dist[v] = dist[u] + 1
1213
q.append((v, u))
1314
elif v != fa:
14-
return dist[u] + dist[v] + 1
15-
return inf
15+
ans = min(ans, dist[u] + dist[v] + 1)
16+
return ans
1617

1718
g = defaultdict(list)
1819
for u, v in edges:

solution/2600-2699/2608.Shortest Cycle in a Graph/Solution.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function findShortestCycle(n: number, edges: number[][]): number {
1010
const dist: number[] = new Array(n).fill(-1);
1111
dist[u] = 0;
1212
const q: number[][] = [[u, -1]];
13+
let ans = inf;
1314
while (q.length) {
1415
const p = q.shift()!;
1516
u = p[0];
@@ -18,12 +19,12 @@ function findShortestCycle(n: number, edges: number[][]): number {
1819
if (dist[v] < 0) {
1920
dist[v] = dist[u] + 1;
2021
q.push([v, u]);
21-
} else if (v != fa) {
22-
return dist[u] + dist[v] + 1;
22+
} else if (v !== fa) {
23+
ans = Math.min(ans, dist[u] + dist[v] + 1);
2324
}
2425
}
2526
}
26-
return inf;
27+
return ans;
2728
};
2829
for (let i = 0; i < n; ++i) {
2930
ans = Math.min(ans, bfs(i));

0 commit comments

Comments
 (0)