|  | @@ -0,0 +1,49 @@
 | 
	
		
			
				|  |  | +package main
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import (
 | 
	
		
			
				|  |  | +	"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
 | 
	
		
			
				|  |  | +}
 |