QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#7676. Перетин дротів

Statistics

Закон Moore стверджує, що кількість транзисторів на чипі подвоюється кожні два роки. Дивовижно, але цей закон справджується вже понад пів століття. Щоразу, коли поточна технологія вже не дозволяла подальшого зростання, дослідники винаходили нові технології виробництва, щоб розміщувати схеми ще щільніше. У близькому майбутньому це може означати побудову чипів у трьох вимірах замість двох. Проте для цієї задачі двох вимірів вистачить.

Проблемою, спільною для всього двовимірного проєктування апаратури (наприклад, чипів, графічних карт, материнських плат тощо), є розміщення дротів. Під час прокладання дротів на апаратурі виникає проблема, якщо вони мають перетинатися. У місці перетину потрібні спеціальні пристрої, що дозволяють двом електричним дротам проходити один над одним, а це робить виробництво дорожчим.

Наша задача така: задано проєкт апаратури з кількома вже розміщеними дротами (усі вони є відрізками прямих). Також задано початкову й кінцеву точки нового дротового з'єднання, яке потрібно додати. Необхідно визначити мінімальну кількість наявних дротів, які доведеться перетнути, щоб з'єднати ці точки. Це з'єднання не обов'язково має бути прямою лінією. Єдина вимога: воно не може перетинати точку, де вже зустрічаються або перетинаються два чи більше дротів.

problem_7676_432fecdc02e6a53d754fca27d00465e2.png

Рисунок L.1: Перший приклад вхідних даних.

Рисунок L.1 показує перший приклад вхідних даних. Вісім наявних дротів утворюють п'ять квадратів. Початкова й кінцева точки нового з'єднання розташовані відповідно в крайньому лівому та крайньому правому квадратах. Чорна штрихова лінія показує, що пряме з'єднання перетинало б чотири дроти, тоді як оптимальний розв'язок перетинає лише два (синя крива).

Вхідні дані

Вхідні дані містять один тестовий випадок. Перший рядок містить п'ять цілих чисел $m,x_0,y_0,x_1,y_1$, що задають кількість наявних дротів ($m \le 100$), а також початкову й кінцеву точки, які потрібно з'єднати. Далі йдуть $m$ рядків, кожен із чотирма цілими числами $x_a,y_a,x_b,y_b$, які описують наявний дріт ненульової довжини від $(x_a,y_a)$ до $(x_b,y_b)$. Абсолютне значення кожної вхідної координати менше за $10^5$. Кожна пара дротів має щонайбільше одну спільну точку, тобто дроти не накладаються один на одного. Початкова й кінцева точки нового дроту не лежать на жодному наявному дроті.

Вихідні дані

Виведіть мінімальну кількість дротів, які потрібно перетнути, щоб з'єднати початкову й кінцеву точки.

Приклади

Вхідні дані 1

8 3 3 19 3
0 1 22 1
0 5 22 5
1 0 1 6
5 0 5 6
9 0 9 6
13 0 13 6
17 0 17 6
21 0 21 6

Вихідні дані 1

2

Вхідні дані 2

1 0 5 10 5
0 0 10 10

Вихідні дані 2

0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.