@@ -289,10 +289,154 @@ 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
343
+ ``` python
344
+
345
+ def dfs (graph , key , visited ):
346
+ for neighbor in graph[key]:
347
+ if not visited[neighbor]: # Check if the next node is not visited
348
+ visited[neighbor] = True
349
+ dfs(graph, neighbor, visited)
350
+
351
+ def main ():
352
+ import sys
353
+ input = sys.stdin.read
354
+ data = input ().split()
355
+
356
+ n = int (data[0 ])
357
+ m = int (data[1 ])
358
+
359
+ graph = [[] for _ in range (n + 1 )]
360
+ index = 2
361
+ for _ in range (m):
362
+ s = int (data[index])
363
+ t = int (data[index + 1 ])
364
+ graph[s].append(t)
365
+ index += 2
366
+
367
+ visited = [False ] * (n + 1 )
368
+ visited[1 ] = True # Process node 1 beforehand
369
+ dfs(graph, 1 , visited)
370
+
371
+ for i in range (1 , n + 1 ):
372
+ if not visited[i]:
373
+ print (- 1 )
374
+ return
375
+
376
+ print (1 )
377
+
378
+ if __name__ == " __main__" :
379
+ main()
380
+
381
+
382
+ ```
383
+
294
384
### Go
295
385
386
+ ``` go
387
+
388
+ package main
389
+
390
+ import (
391
+ " bufio"
392
+ " fmt"
393
+ " os"
394
+ )
395
+
396
+ func dfs (graph [][]int , key int , visited []bool ) {
397
+ visited[key] = true
398
+ for _ , neighbor := range graph[key] {
399
+ if !visited[neighbor] {
400
+ dfs (graph, neighbor, visited)
401
+ }
402
+ }
403
+ }
404
+
405
+ func main () {
406
+ scanner := bufio.NewScanner (os.Stdin )
407
+ scanner.Scan ()
408
+ var n , m int
409
+ fmt.Sscanf (scanner.Text (), " %d %d " , &n, &m)
410
+
411
+ graph := make ([][]int , n+1 )
412
+ for i := 0 ; i <= n; i++ {
413
+ graph[i] = make ([]int , 0 )
414
+ }
415
+
416
+ for i := 0 ; i < m; i++ {
417
+ scanner.Scan ()
418
+ var s , t int
419
+ fmt.Sscanf (scanner.Text (), " %d %d " , &s, &t)
420
+ graph[s] = append (graph[s], t)
421
+ }
422
+
423
+ visited := make ([]bool , n+1 )
424
+
425
+ dfs (graph, 1 , visited)
426
+
427
+ for i := 1 ; i <= n; i++ {
428
+ if !visited[i] {
429
+ fmt.Println (-1 )
430
+ return
431
+ }
432
+ }
433
+ fmt.Println (1 )
434
+ }
435
+
436
+
437
+ ```
438
+
439
+
296
440
### Rust
297
441
298
442
### Javascript
0 commit comments