@@ -97,15 +97,16 @@ class Solution:
97
97
dist = [- 1 ] * n
98
98
dist[u] = 0
99
99
q = deque([(u, - 1 )])
100
+ ans = inf
100
101
while q:
101
102
u, fa = q.popleft()
102
103
for v in g[u]:
103
104
if dist[v] < 0 :
104
105
dist[v] = dist[u] + 1
105
106
q.append((v, u))
106
107
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
109
110
110
111
g = defaultdict(list )
111
112
for u, v in edges:
@@ -187,6 +188,7 @@ class Solution {
187
188
dist[u] = 0 ;
188
189
Deque<int[]> q = new ArrayDeque<> ();
189
190
q. offer(new int [] {u, - 1 });
191
+ int ans = inf;
190
192
while (! q. isEmpty()) {
191
193
var p = q. poll();
192
194
u = p[0 ];
@@ -196,11 +198,11 @@ class Solution {
196
198
dist[v] = dist[u] + 1 ;
197
199
q. offer(new int [] {v, u});
198
200
} else if (v != fa) {
199
- return dist[u] + dist[v] + 1 ;
201
+ ans = Math . min(ans, dist[u] + dist[v] + 1 ) ;
200
202
}
201
203
}
202
204
}
203
- return inf ;
205
+ return ans ;
204
206
}
205
207
}
206
208
```
@@ -263,6 +265,7 @@ public:
263
265
dist[u] = 0;
264
266
queue<pair<int, int>> q;
265
267
q.emplace(u, -1);
268
+ int ans = inf;
266
269
while (!q.empty()) {
267
270
auto p = q.front();
268
271
u = p.first;
@@ -273,11 +276,11 @@ public:
273
276
dist[v] = dist[u] + 1;
274
277
q.emplace(v, u);
275
278
} else if (v != fa) {
276
- return dist[u] + dist[v] + 1;
279
+ ans = min(ans, dist[u] + dist[v] + 1) ;
277
280
}
278
281
}
279
282
}
280
- return inf ;
283
+ return ans ;
281
284
};
282
285
int ans = inf;
283
286
for (int i = 0; i < n; ++i) {
@@ -354,6 +357,7 @@ func findShortestCycle(n int, edges [][]int) int {
354
357
}
355
358
dist[u] = 0
356
359
q := [][2 ]int {{u, -1 }}
360
+ ans := inf
357
361
for len (q) > 0 {
358
362
p := q[0 ]
359
363
u = p[0 ]
@@ -364,11 +368,11 @@ func findShortestCycle(n int, edges [][]int) int {
364
368
dist[v] = dist[u] + 1
365
369
q = append (q, [2 ]int {v, u})
366
370
} else if v != fa {
367
- return dist[u] + dist[v] + 1
371
+ ans = min (ans, dist[u]+ dist[v]+ 1 )
368
372
}
369
373
}
370
374
}
371
- return inf
375
+ return ans
372
376
}
373
377
ans := inf
374
378
for i := 0 ; i < n; i++ {
@@ -439,6 +443,7 @@ function findShortestCycle(n: number, edges: number[][]): number {
439
443
const dist: number [] = new Array (n ).fill (- 1 );
440
444
dist [u ] = 0 ;
441
445
const q: number [][] = [[u , - 1 ]];
446
+ let ans = inf ;
442
447
while (q .length ) {
443
448
const p = q .shift ()! ;
444
449
u = p [0 ];
@@ -447,12 +452,12 @@ function findShortestCycle(n: number, edges: number[][]): number {
447
452
if (dist [v ] < 0 ) {
448
453
dist [v ] = dist [u ] + 1 ;
449
454
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 ) ;
452
457
}
453
458
}
454
459
}
455
- return inf ;
460
+ return ans ;
456
461
};
457
462
for (let i = 0 ; i < n ; ++ i ) {
458
463
ans = Math .min (ans , bfs (i ));
0 commit comments