@@ -289,6 +289,55 @@ int main() {
289
289
290
290
### Java
291
291
292
+ ``` java
293
+
294
+ import java.util.* ;
295
+
296
+ public class Main {
297
+
298
+ public static void dfs (List<List<Integer > > graph , int key , boolean [] visited ) {
299
+ for (int neighbor : graph. get(key)) {
300
+ if (! visited[neighbor]) { // Check if the next node is not visited
301
+ visited[neighbor] = true ;
302
+ dfs(graph, neighbor, visited);
303
+ }
304
+ }
305
+ }
306
+
307
+ public static void main (String [] args ) {
308
+ Scanner scanner = new Scanner (System . in);
309
+ int n = scanner. nextInt();
310
+ int m = scanner. nextInt();
311
+
312
+ List<List<Integer > > graph = new ArrayList<> ();
313
+ for (int i = 0 ; i <= n; i++ ) {
314
+ graph. add(new ArrayList<> ());
315
+ }
316
+
317
+ for (int i = 0 ; i < m; i++ ) {
318
+ int s = scanner. nextInt();
319
+ int t = scanner. nextInt();
320
+ graph. get(s). add(t);
321
+ }
322
+
323
+ boolean [] visited = new boolean [n + 1 ];
324
+ visited[1 ] = true ; // Process node 1 beforehand
325
+ dfs(graph, 1 , visited);
326
+
327
+ for (int i = 1 ; i <= n; i++ ) {
328
+ if (! visited[i]) {
329
+ System . out. println(- 1 );
330
+ return ;
331
+ }
332
+ }
333
+ System . out. println(1 );
334
+ }
335
+ }
336
+
337
+
338
+ ```
339
+
340
+
292
341
### Python
293
342
BFS算法
294
343
``` Python
@@ -327,8 +376,103 @@ if __name__ == "__main__":
327
376
328
377
```
329
378
379
+ ``` python
380
+
381
+ def dfs (graph , key , visited ):
382
+ for neighbor in graph[key]:
383
+ if not visited[neighbor]: # Check if the next node is not visited
384
+ visited[neighbor] = True
385
+ dfs(graph, neighbor, visited)
386
+
387
+ def main ():
388
+ import sys
389
+ input = sys.stdin.read
390
+ data = input ().split()
391
+
392
+ n = int (data[0 ])
393
+ m = int (data[1 ])
394
+
395
+ graph = [[] for _ in range (n + 1 )]
396
+ index = 2
397
+ for _ in range (m):
398
+ s = int (data[index])
399
+ t = int (data[index + 1 ])
400
+ graph[s].append(t)
401
+ index += 2
402
+
403
+ visited = [False ] * (n + 1 )
404
+ visited[1 ] = True # Process node 1 beforehand
405
+ dfs(graph, 1 , visited)
406
+
407
+ for i in range (1 , n + 1 ):
408
+ if not visited[i]:
409
+ print (- 1 )
410
+ return
411
+
412
+ print (1 )
413
+
414
+ if __name__ == " __main__" :
415
+ main()
416
+
417
+
418
+ ```
419
+
330
420
### Go
331
421
422
+ ``` go
423
+
424
+ package main
425
+
426
+ import (
427
+ " bufio"
428
+ " fmt"
429
+ " os"
430
+ )
431
+
432
+ func dfs (graph [][]int , key int , visited []bool ) {
433
+ visited[key] = true
434
+ for _ , neighbor := range graph[key] {
435
+ if !visited[neighbor] {
436
+ dfs (graph, neighbor, visited)
437
+ }
438
+ }
439
+ }
440
+
441
+ func main () {
442
+ scanner := bufio.NewScanner (os.Stdin )
443
+ scanner.Scan ()
444
+ var n , m int
445
+ fmt.Sscanf (scanner.Text (), " %d %d " , &n, &m)
446
+
447
+ graph := make ([][]int , n+1 )
448
+ for i := 0 ; i <= n; i++ {
449
+ graph[i] = make ([]int , 0 )
450
+ }
451
+
452
+ for i := 0 ; i < m; i++ {
453
+ scanner.Scan ()
454
+ var s , t int
455
+ fmt.Sscanf (scanner.Text (), " %d %d " , &s, &t)
456
+ graph[s] = append (graph[s], t)
457
+ }
458
+
459
+ visited := make ([]bool , n+1 )
460
+
461
+ dfs (graph, 1 , visited)
462
+
463
+ for i := 1 ; i <= n; i++ {
464
+ if !visited[i] {
465
+ fmt.Println (-1 )
466
+ return
467
+ }
468
+ }
469
+ fmt.Println (1 )
470
+ }
471
+
472
+
473
+ ```
474
+
475
+
332
476
### Rust
333
477
334
478
### Javascript
0 commit comments