dev/algorithm

BOJ / 11265번 / ėė‚˜ģ§€ ģ•ŠėŠ” ķŒŒķ‹° [Go][Python3]

crscnt 2021. 1. 5. 21:00

šŸ‘©šŸ»‍šŸ’» 문제

 

11265번: ėė‚˜ģ§€ ģ•ŠėŠ” ķŒŒķ‹°

ģž…ė „ģ˜ 첫 번째 ģ¤„ģ—ėŠ” ķŒŒķ‹°ģž„ģ˜ 크기 N(5 ≤ N ≤ 500)ź³¼ ģ„œė¹„ģŠ¤ė„¼ ģš”ģ²­ķ•œ ģ†ė‹˜ģ˜ 수 M(1 ≤ M ≤ 10,000) ģ“ 주얓진다. ź°ź°ģ˜ ķŒŒķ‹°ģž„ģ€ 1ė²ˆė¶€ķ„° Nė²ˆź¹Œģ§€ ė²ˆķ˜øź°€ 붙여져 ģžˆė‹¤. ė‹¤ģŒģ—ėŠ” Nź°œģ˜ 줄에 ź±ø

www.acmicpc.net


āœšŸ» ķ’€ģ“

šŸŽØ Go

// https://www.acmicpc.net/problem/11265
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n, m int
	fmt.Fscanln(reader, &n, &m)

	graph := make([][]int, n)
	for i := 0; i < n; i++ {
		graph[i] = make([]int, n)
	}

	for i := 0; i < n; i++ {
		for j := 0; j < n; j++ {
			fmt.Fscanf(reader, "%d ", &graph[i][j])
		}
	}

	graph = floydWarshall(graph)

	for i := 0; i < m; i++ {
		var a, b, c int
		fmt.Fscanln(reader, &a, &b, &c)
		if graph[a-1][b-1] <= c {
			fmt.Fprintln(writer, "Enjoy other party")
		} else {
			fmt.Fprintln(writer, "Stay here")
		}
	}
}

func floydWarshall(graph [][]int) [][]int {
	for i := 0; i < len(graph); i++ { // j->k ź²½ė”œė³“ė‹¤ j->i->k ź²½ė”œź°€ 빠넸 경우 갱신
		for j := 0; j < len(graph); j++ {
			for k := 0; k < len(graph); k++ {
				if graph[j][i]+graph[i][k] < graph[j][k] {
					graph[j][k] = graph[j][i] + graph[i][k]
				}
			}
		}
	}
	return graph
}

šŸŽØ Python3

# https://www.acmicpc.net/problem/11265
import sys

def floyd_warshall(graph):
    for i in range(len(graph)):
        for j in range(len(graph)):
            for k in range(len(graph)):
                if graph[j][i] + graph[i][k] < graph[j][k]:
                    graph[j][k] = graph[j][i] + graph[i][k]
    return graph

if __name__ == "__main__":
    n, m = list(map(int, sys.stdin.readline().split()))
    graph = []
    for i in range(n):
        graph.append(list(map(int, sys.stdin.readline().split())))

    graph = floyd_warshall(graph)

    for i in range(m):
        a, b, c = list(map(int, sys.stdin.readline().split()))
        if graph[a-1][b-1] <= c:
            print("Enjoy other party")
        else:
            print("Stay here")
728x90