CF1630F.Making It Bipartite
NOI/NOI+/CTSC
通过率:0%
时间限制:4.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an undirected graph of n vertices indexed from 1 to n, where vertex i has a value ai assigned to it and all values ai are different. There is an edge between two vertices u and v if either au divides av or av divides au.
Find the minimum number of vertices to remove such that the remaining graph is bipartite, when you remove a vertex you remove all the edges incident to it.
给你一个包含 n 个顶点的无向图,顶点编号从 1 到 n。每个顶点 i 被赋予一个值 ai,且所有 ai 互不相同。当且仅当 au 整除 av 或 av 整除 au 时,顶点 u 和 v 之间存在一条边。
求最少需要删除多少个顶点,才能使得剩余图是二分图;删除一个顶点的同时,也将与其关联的所有边一并删除。
输入格式
The input consists of multiple test cases. The first line contains a single integer t (1≤t≤104) — the number of test cases. Description of the test cases follows.
The first line of each test case contains a single integer n (1≤n≤5⋅104) — the number of vertices in the graph.
The second line of each test case contains n integers, the i-th of them is the value ai (1≤ai≤5⋅104) assigned to the i-th vertex, all values ai are different.
It is guaranteed that the sum of n over all test cases does not exceed 5⋅104.
输入包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤5⋅104),表示图中顶点的数量。
每个测试用例的第二行包含 n 个整数,其中第 i 个整数为分配给第 i 个顶点的值 ai(1≤ai≤5⋅104),所有 ai 的值互不相同。
保证所有测试用例的 n 值之和不超过 5⋅104。
输出格式
For each test case print a single integer — the minimum number of vertices to remove such that the remaining graph is bipartite.
对于每个测试用例,输出一个整数——使得剩余图是二分图所需删除的最少顶点数。
输入输出样例
输入#1
4 4 8 4 2 1 4 30 2 3 5 5 12 4 6 2 3 10 85 195 5 39 3 13 266 154 14 2
输出#1
2 0 1 2
说明/提示
In the first test case if we remove the vertices with values 1 and 2 we will obtain a bipartite graph, so the answer is 2, it is impossible to remove less than 2 vertices and still obtain a bipartite graph.
Before
After


test case #1
In the second test case we do not have to remove any vertex because the graph is already bipartite, so the answer is 0.
Before
After


test case #2
In the third test case we only have to remove the vertex with value 12, so the answer is 1.
Before
After


test case #3
In the fourth test case we remove the vertices with values 2 and 195, so the answer is 2.
Before
After


test case #4
在第一个测试用例中,如果我们删除值为 1 和 2 的顶点,则会得到一个二分图,因此答案是 2;不可能仅删除少于 2 个顶点就仍得到一个二分图。
删除前
删除后


测试用例 #1
在第二个测试用例中,我们无需删除任何顶点,因为该图本身已是二分图,因此答案是 0。
删除前
删除后


测试用例 #2
在第三个测试用例中,我们只需删除值为 12 的顶点,因此答案是 1。
删除前
删除后


测试用例 #3
在第四个测试用例中,我们删除值为 2 和 195 的顶点,因此答案是 2。
删除前
删除后


测试用例 #4
输入解题思路,AI测评打分。不知道怎么写?