Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1efaa18

Browse files
authored
Update 0105.有向图的完全可达性.md for java python and go
Update 0105.有向图的完全可达性.md for java python and go
1 parent f16c640 commit 1efaa18

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed

‎problems/kamacoder/0105.有向图的完全可达性.md‎

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,10 +289,154 @@ int main() {
289289

290290
### Java
291291

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+
292341
### Python
293342

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+
294384
### Go
295385

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+
296440
### Rust
297441

298442
### Javascript

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /