Loading [MathJax]/jax/output/HTML-CSS/jax.js

المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی انتخاب تیم:دوره ی ۱۶:سوال ۱۲

Polygon

n ضلعی ساده‌ی P روی صفحه داده شده است. یک مسیر (خم یا خط شکسته) ﺑﯿﻦ ﺩﻭ ﻧﻘﻄﻪﯼ ﺩﻝﺧﻮﺍﻩ ﺭﻭﯼ ﺻﻔﺤﻪ ﺭﺍ«ﺧﻮﺏ» ﻣﯽﻧﺎﻣﯿﻢ ﺍﮔﺮ ﺑﺎ P اشتراک داشته باشد (حتی در یک نقطه و با یکی از اضلاع). مثلا در شکل روبه‌رو مسیرهای AB و CD مسیرهایی خوب هستند.

دو نقطه‌ی s و t روی صفحه داده شده‌اند. می‌دانیم s و t داخل P یا روی اضلاع آن نیستند. شما باید طول کوتاه‌ترین مسیر خوب از s به t را بیابید.

برنامه‌ای بنویسید که:

  • مشخصات P و q جفت نقطه‌ی si و ti را از ورودی بخواند.
  • طول کوتاه‌ترین مسیر خوب بین هر si و ti را پیدا کند و در خروجی بنویسد.

ورودی

در سطر اول ورودی، دو عدد صحیح n و q به ترتیب نوشته شده‌اند.(1n,q1000)

در هر یک از n سطر بعدی، دو عدد x و y نوشته شده است که مختصات یک راس از P را مشخص می‌کند. رئوس P به ترتیب ساعت‌گرد یا پادساعت‌گرد داده شده‌اند.

در سطر iام از q سطر بعدی، چهار عدد x1، y1، x2 و y2 نوشته شده‌اند که (x1,y1) مختصات si و (x2,y2) مختصات ti است.

قدر مطلق تمام اعداد ورودی کم‌تر یا مساوی ۱۰۰۰ است و همه‌ی مختصه‌ها حداکثر تا ۴ رقم اعشار به شما داده می‌شوند.

خروجی

در سطر iام از خروجی طول کوتاه‌ترین مسیر خوب بین si و ti را تا ۴ رقم اعشار بنویسید. عدد خود را به نزدیک‌ترین ضریب صحیح 104 گرد کنید.

محدودیت‌ها

  • محدودیت زمان: ۵ ثانیه
  • محدودیت حافظه: ۳۲ مگابایت

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
3 1
0 0
1 0
0 1
1 1 1 -1
2.0000

ابزار صفحه