| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | package mainimport (	"fmt"	"math")func main() {	var n, m, src int	fmt.Scan(&n, &m, &src)	adj := make([][]int, n)	length := make([][]int, n)	for i := range length {		length[i] = make([]int, n)	}	for i := 0; i < m; i++ {		var u, v, l int		fmt.Scan(&u, &v, &l)		adj[u] = append(adj[u], v)		length[u][v] = l	}	fmt.Println(floyd(adj, length))}func floyd(adj [][]int, length [][]int) [][]int {	n := len(adj)	dist := make([][]int, n)	for i := range dist {		dist[i] = make([]int, n)		for j := range dist[i] {			dist[i][j] = math.MaxInt32		}	}	for u := range adj {		for _, v := range adj[u] {			dist[u][v] = length[u][v]		}	}	for k := 0; k < n; k++ {		for i := 0; i < n; i++ {			for j := 0; j < n; j++ {				if alt := dist[i][k] + dist[k][j]; alt < dist[i][j] {					dist[i][j] = alt				}			}		}	}	return dist}
 |