1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 巡回セールスマン問題メニュー(言語選択)
  4. 問題一覧 C++編
  5. ユークリッド距離 C++編

巡回セールスマン問題メニューのサムネイル
ユークリッド距離 C++編(paizaランク D 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

この問題集では、巡回セールスマン問題を扱います。

巡回セールスマン問題とは、都市の集合と各都市間の距離が与えられ、全都市をちょうど1回ずつ訪れたのち出発した都市に戻ってくるような経路 (巡回路) のうち最も短いものを求める問題です。
英語では Traveling Salesman Problem と呼ばれており、この頭文字を取ってTSPと表記することもあります。
TSPはNP困難という複雑性クラスに属しており、効率よく(= 問題サイズの多項式時間で)解くことがほとんどできない問題だろうとされています。
この問題集では、巡回セールスマン問題に対する厳密解法、近似解法、発見的解法(ヒューリスティクス)を学んでいきます。

この問題集では、各都市は二次元平面上の点とします。都市間の距離にはユークリッド距離を用いることにします。点 (x_1, y_1) と点 (x_2, y_2) のユークリッド距離は、√((x_1-x_2)^2 + (y_1-y_2)^2)です。
まずは手始めに、2 点間のユークリッド距離を計算してみましょう。

入力される値

x_1 y_1
x_2 y_2


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

都市 (x_1, y_1) と都市 (x_2, y_2) のユークリッド距離を出力してください。絶対誤差が 10^-6 以下なら正解と判定されます。

条件

すべてのテストケースにおいて、以下の条件をみたします。
・ 入力はすべて整数
・ -1,000 ≦ x_i, y_i ≦ 1,000 (1 ≦ i ≦ 2)

入力例1

0 0
5 6

出力例1

7.810249675907

問題一覧へ戻る

ページの先頭へ戻る