DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

Rainbow Spanning Tree

Back to problem

Editorial

색 집합 S⊆{1,2,…,7}S\subseteq\{1,2,\dots,7\}S⊆{1,2,…,7}에 대하여, SSS에 속한 색 중 적어도 하나로 칠할 수 있는 간선들의 집합을 E(S)E(S)E(S)라 하자. 즉 E(S)={ e:Ae∩S≠∅ }E(S)=\{\,e : A_e\cap S\neq\emptyset\,\}E(S)={e:Ae​∩S이다. 또한 r(S)r(S)r(S)를 E(S)E(S)E(S)의 간선만 사용하여 만들 수 있는 forest의 최대 간선 수, 즉 E(S)E(S)E(S) 안에서 사이클 없이 택할 수 있는 간선 수의 최댓값이라 하자.

r(S)r(S)r(S)는 DSU로 계산할 수 있다. 처음에는 모든 정점을 서로 다른 component에 둔다. 간선을 하나씩 보면서, 그 간선이 SSS에 속한 색 중 하나라도로 칠할 수 있으면(즉 Ae∩S≠∅A_e\cap S\neq\emptysetAe​∩S이면) 양 끝점을 합친다. 이때 실제로 서로 다른 두 component가 합쳐진 횟수가 이다. 색이 7개뿐이므로 비어 있지 않은 색 집합은 개이며, 따라서 모든 에 대하여 를 미리 계산해 둘 수 있다.

판정 조건

spanning tree는 항상 정확히 N−1N-1N−1개의 간선을 가지므로, 먼저 a1+a2+⋯+a7=N−1a_1+a_2+\cdots+a_7=N-1a1​+a2​이어야 한다. 이 조건이 성립하지 않으면 답은 이다. 이 조건이 성립한다고 할 때, 답이 이기 위한 필요충분조건은 모든 색 집합 에 대하여

∑j∈Saj≤r(S)\sum_{j\in S}a_j \le r(S)j∈S∑​aj​≤r(S)

가 성립하는 것이다.

이 조건의 필요성은 다음과 같이 확인된다. 색 집합 SSS에 속한 색으로 칠해야 하는 간선은 총 ∑j∈Saj\sum_{j\in S}a_j∑j∈S​aj​개이다. 그런데 색이 SS에 속하도록 칠해진 간선은 모두 에 속해야 하고, spanning tree의 부분집합이므로 그들끼리도 사이클을 이룰 수 없다. 따라서 그 개수는 안의 forest 최대 크기인 를 넘을 수 없다. 즉 를 만족하는 색 집합 가 존재하면 답은 이다.

이제 이 조건이 충분함을 보인다.

증명

간선 집합 위의 독립성을 "사이클을 이루지 않음"으로 정의하면, 독립 집합은 forest이며 그 rank는 해당 간선 집합 내 forest의 최대 크기이다. 이는 곧 graph matroid이다.

Theorem 2.1. Rado's Theorem

matroid MMM의 ground set을 EEE, rank 함수를 ρ\rhoρ라 하고, 집합 A1,…,Am⊆EA_1,\dots,A_m\subseteq EA가 주어졌다고 하자. 각 마다 를 택하여 이 모두 서로 다르고 이 에서 독립이 되도록 할 수 있을 필요충분조건은 모든 에 대하여

구현과 시간복잡도

정리하면, 한 질의의 답이 Yes이기 위한 필요충분조건은 두 가지이다. 첫째, a1+a2+⋯+a7=N−1a_1+a_2+\cdots+a_7=N-1a1​+a2​+⋯+a이어야 한다. 둘째, 모든 색 집합 에 대하여 이어야 한다.

=
∅}

=
∅
r(S)r(S)r(S)
27−1=1272^7-1=12727−1=127
SSS
r(S)r(S)r(S)
+
⋯+
a7​=
N−
1
No
Yes
S⊆{1,2,…,7}S\subseteq\{1,2,\dots,7\}S⊆{1,2,…,7}
S
E(S)E(S)E(S)
E(S)E(S)E(S)
r(S)r(S)r(S)
∑j∈Saj>r(S)\sum_{j\in S}a_j>r(S)∑j∈S​aj​>r(S)
SSS
No
1
​
,
…
,
Am​
⊆
E
iii
xi∈Aix_i\in A_ixi​∈Ai​
x1,…,xmx_1,\dots,x_mx1​,…,xm​
{x1,…,xm}\{x_1,\dots,x_m\}{x1​,…,xm​}
MMM
I⊆{1,…,m}I\subseteq\{1,\dots,m\}I⊆{1,…,m}
ρ(⋃i∈IAi)≥∣I∣\rho\Bigl(\bigcup_{i\in I}A_i\Bigr)\ge |I|ρ(i∈I⋃​Ai​)≥∣I∣

가 성립하는 것이다.

색 jjj로 칠할 수 있는 간선들의 집합을 EjE_jEj​라 하자(즉 Ej=E({j})E_j=E(\{j\})Ej​=E({j})). 각 색 jjj마다 정확히 aja_jaj​개의 간선을 선택하되, 선택된 간선들은 전체적으로 서로 다르고 사이클을 이루지 않아야 한다.

각 색 jjj에 대하여 "EjE_jEj​에서 간선 하나를 선택한다"는 요구사항을 aja_jaj​개 생성한다. Theorem 2.1을 적용하면, 모든 요구사항을 서로 다른 간선으로 만족하면서 전체가 독립(forest)이 되도록 할 수 있을 필요충분조건은, 요구사항들의 임의의 부분집합에 대하여 해당 요구사항들이 선택할 수 있는 간선들의 합집합의 rank가 요구사항의 개수 이상인 것이다.

요구사항들의 부분집합 하나를 택하고, 거기에 등장하는 색들의 집합을 SSS라 하자. 해당 요구사항들이 선택할 수 있는 간선들의 합집합은 ⋃j∈SEj=E(S)\displaystyle\bigcup_{j\in S}E_j=E(S)j∈S⋃​Ej​=이고 그 rank는 이다. 주어진 색 집합 에 대하여 가장 강한 제약은 에 속한 색의 요구사항을 모두 포함하는 경우에 발생하며, 이때 요구사항의 개수는 이다. 따라서 Theorem 2.1의 조건은 정확히 "모든 에 대하여 "와 동치이다.

이 조건이 성립하면 각 색 jjj에서 정확히 aja_jaj​개의 간선을 선택하여 전체가 forest가 되도록 할 수 있다. a1+⋯+a7=N−1a_1+\cdots+a_7=N-1a1​+이므로 선택된 간선은 총 개이고, 정점이 개인 그래프에서 개의 간선을 갖는 forest는 연결되어 있어야 하므로 spanning tree이다. 따라서 조건을 만족하는 spanning tree와 색 배정이 존재한다.

7
​
=
N−
1
S⊆{1,2,…,7}S\subseteq\{1,2,\dots,7\}S⊆{1,2,…,7}
∑j∈Saj≤r(S)\sum_{j\in S}a_j\le r(S)∑j∈S​aj​≤r(S)

따라서 각 질의마다 먼저 합이 N−1N-1N−1인지 확인하고, 그렇지 않으면 No를 출력한다. 이후 127127127개의 색 집합을 모두 검사하여, 하나라도 위배되면 No를, 모두 만족하면 Yes를 출력한다.

∑j∈Saj\sum_{j\in S}a_j∑j∈S​aj​는 bitmask DP로 한 번에 구할 수 있다. 색 jjj를 비트 jjj에 대응시키고, SSS에서 임의의 색 xxx 하나를 제거하면 need[S]=need[S∖{x}]+ax\text{need}[S]=\text{need}[S\setminus\{x\}]+a_xneed[S]=need[S∖{x}]+ax​이므로, 질의 하나당 O(27)O(2^7)O(27)에 모든 SSS에 대한 need[S]\text{need}[S]need[S]를 구할 수 있다.

전체 시간복잡도는 O(27M α(N)+27Q)O(2^7M\,\alpha(N)+2^7Q)O(27Mα(N)+27Q)이다. 첫 번째 항은 127127127개의 색 집합 각각에 대하여 DSU로 r(S)r(S)r(S)를 전처리하는 비용이며, 두 번째 항은 각 질의에서 모든 색 집합을 검사하는 비용이다.

Solution by Claude Opus 4.8

E(S)
r(S)r(S)r(S)
SSS
SSS
∑j∈Saj\sum_{j\in S}a_j∑j∈S​aj​
SSS
∑j∈Saj≤r(S)\sum_{j\in S}a_j\le r(S)∑j∈S​aj​≤r(S)
⋯+
a7​=
N−
1
N−1N-1N−1
NNN
N−1N-1N−1