こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
有向グラフの隣接行列と隣接リスト | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
これも一瞬よくわからなかったので、AIと少し壁打ちしました。
これまでは双方に関係性があることが前提でしたが、これが片方のみになるということですね。
例として、以下のような方向の場合
- 1 → 2
- 1 → 3
- 4 → 2
- 4 → 5
- 5 → 3
以下のような表になります。
実装としては以下のようになります。
package main
import "fmt"
func main(){
var n, m int
fmt.Scan(&n, &m)
g := make([][]int, n)
for i := 0; i < n; i++ {
g[i] = make([]int, n)
}
for i := 0; i < m; i++ {
var a, b int
fmt.Scan(&a, &b)
g[a - 1][b - 1] = 1 // 前回からここの部分が変わっただけ
}
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
fmt.Printf("%d", g[i][j])
}
fmt.Println()
}
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
if g[i][j] == 1 {
fmt.Printf("%d", j)
}
}
fmt.Println()
}
}
前回から変わった部分はコメントの部分だけです。
今回はこれで👍