QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 256 MB Total points: 150 Hackable ✓

#25299. NPC 도전 IV

Statistics

컴퓨터 과학에서 NP-완전(NP-Complete, 약칭 NPC) 문제는 이론적 깊이와 풀이의 난이도를 동시에 갖춘 고전적인 문제군입니다. 현재까지 이들에 대한 다항 시간 알고리즘은 발견되지 않았지만, 그중 어느 하나라도 해결된다면 모든 NP 문제가 단번에 풀리게 됩니다.

알고리즘 연구에 열정적인 소 W는 늘 NPC 문제에 도전하는 것을 꿈꿔왔습니다. 그는 그래프 이론에서 유명한 "최대 공통 유도 부분 그래프 문제"가 바로 고전적인 NPC 문제라는 것을 알게 되었습니다. 일반 그래프에서 넘기 힘든 복잡도의 장벽에 직면한 소 W는 한 걸음 물러서서, 구조가 더 아름다운 트리부터 시작하여 트리에서의 동형 연결 부분 그래프 문제를 연구하기로 결정했습니다.

구체적으로, 각각 $n$개의 정점을 포함하는 두 개의 루트 없는 트리 $T_1$과 $T_2$가 주어지며, 두 트리의 정점은 각각 $1 \sim n$으로 번호가 매겨져 있습니다. 소 W는 $T_1$에서 공집합이 아닌 정점 부분집합 $V_1$을 선택하고, $T_2$에서 공집합이 아닌 정점 부분집합 $V_2$를 선택한 뒤, 각 집합 내부의 정점들이 원래 트리에 가지고 있던 모든 간선을 유지하여 각각 두 개의 부분 그래프 $G_1$과 $G_2$를 유도하고자 합니다.

소 W는 유도된 두 부분 그래프 $G_1, G_2$가 다음 조건을 동시에 만족해야 한다고 요구합니다:

  1. 연결성: $G_1$과 $G_2$는 모두 연결 그래프이다(특히, 정점을 $1$개만 포함하는 그래프도 연결된 것으로 간주한다).
  2. 동형성: $G_1$과 $G_2$는 동형이다. 즉, $V_1$에서 $V_2$로의 전단사 함수(일대일 대응 관계) $f : V_1 \to V_2$가 존재하여, 임의의 $u, v \in V_1$에 대해 $u$와 $v$가 $G_1$에서 간선으로 연결되어 있을 필요충분조건은 $f(u)$와 $f(v)$가 $G_2$에서 간선으로 연결되어 있는 것이다. 주의: 서로 대응하는 정점 $u$와 $f(u)$의 번호가 같을 필요는 없다.

이제 소 W는 이 단순화된 문제를 당신에게 맡겼습니다. 위 요구사항을 만족하는 동형 연결 부분 그래프는 최대 몇 개의 정점을 포함할 수 있는지(즉, $|V_1|$의 최댓값) 구하시오.

입력

stdin에서 데이터를 입력받는다.

첫째 줄에 각 트리의 정점 개수를 나타내는 양의 정수 $n$이 주어진다.

다음 $n - 1$개의 줄에는 각각 트리 $T_1$의 무방향 간선 $(u, v)$를 나타내는 두 양의 정수 $u, v$가 주어진다.

그다음 $n - 1$개의 줄에는 각각 트리 $T_2$의 무방향 간선 $(u, v)$를 나타내는 두 양의 정수 $u, v$가 주어진다.

출력

stdout으로 출력한다.

선택된 동형 연결 부분 그래프의 최대 정점 수를 나타내는 양의 정수를 한 줄에 출력한다.

예제

입력 1

4
1 2
2 3
3 4
1 2
1 3
1 4

출력 1

3

참고

$T_1$에서 정점 집합 $V_1 = \{1, 2, 3\}$을 선택하고, $T_2$에서 정점 집합 $V_2 = \{1, 2, 3\}$을 선택한다. $V_1$의 정점 $1, 2, 3$을 차례대로 $V_2$의 정점 $2, 1, 3$에 대응시키면, 유도된 두 부분 그래프는 모두 $3$개의 정점을 포함하는 사슬(경로)이 되어 연결성과 동형성을 모두 만족한다.

$T_1$ 자체가 하나의 사슬이므로 그 임의의 연결 부분 그래프 역시 반드시 사슬이어야 한다. 반면 성형 그래프(스타 그래프) $T_2$에서 가장 긴 사슬은 오직 $3$개의 정점만 포함하므로, 정점 수가 $3$을 초과하는 동형 연결 부분 그래프는 선택할 수 없다.

예제 2

참가자 디렉터리의 npc/npc2.in과 npc/npc2.ans를 참조하라.

이 예제는 서브태스크 $1$의 제약 조건을 만족한다.

예제 3

참가자 디렉터리의 npc/npc3.in과 npc/npc3.ans를 참조하라.

이 예제는 서브태스크 $4$의 제약 조건을 만족한다.

예제 4

참가자 디렉터리의 npc/npc4.in과 npc/npc4.ans를 참조하라.

이 예제는 서브태스크 $7$의 제약 조건을 만족한다.

서브태스크

모든 데이터에 대해 $1 \le n \le 500$이며, 각 간선의 양 끝점 번호는 모두 $1 \sim n$ 사이에 있고, 주어지는 두 그래프는 모두 올바른 트리임이 보장된다.

이 문제의 만점은 $150$점이며, 서브태스크 묶음 채점을 사용한다. 하나의 서브태스크에 포함된 모든 테스트 케이스를 통과해야만 해당 서브태스크의 점수를 얻을 수 있다. 각 서브태스크의 상세한 제약 조건은 아래 표와 같다.

서브태스크 번호 $n$ 특수 성질 배점
$1$ $\le 10$ 없음 $20$
$2$ $\le 60$ 없음 $25$
$3$ $\le 100$ 없음 $30$
$4$ $\le 500$ A $20$
$5$ $\le 500$ B $15$
$6$ $\le 500$ C $10$
$7$ $\le 500$ 없음 $30$

특수 성질 A: 두 트리의 모든 정점의 차수는 $3$ 이하이다.

특수 성질 B: 동형 사상이 $T_1$의 정점 $1$을 $T_2$의 정점 $1$에 대응시키는 최적해가 존재한다.

특수 성질 C: 최종 답이 $n - 1$ 이상임이 보장된다.

참고: 트리에서 한 정점의 차수란 그 정점에 직접 연결된 간선의 개수를 뜻한다.

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.