#35996. 冒泡排序生成图
冒泡排序生成图
暂无测试数据。
蒜头最近学习了冒泡排序,他用冒泡序列把一个排列 $a_1$, $a_2$, $\cdots$, $a_n$ 排成升序。
他觉得冒泡排序太无聊了,他想在冒泡排序的基础上构建一张图,初始的时候图有 $n$ 个顶点 $0$ 条边。他在冒泡排序过程中嵌入一些生成图上边的代码,代码框架如下。
int bubbleSortGraph(int n) {
// 建一个 n 个点 0 条边的图 G
bool swapped = false;
do {
swapped = false;
for (int i = 1; i < n; i++) {
if (a[i] > a[i + 1]) {
// 在 a[i] 和 a[i + 1] 之间连一条边
swap(a[i], a[i + 1]);
swapped = true;
}
}
} while (swapped)
/* 重复执行直到不再出现交换*/
}
图上的一个独立集定义为图的顶点集 $V$ 的一个子集 $V'$,$V'$ 中任意任意两个顶点之间都没有边存在。最大独立集是指点数最多的独立集。
给定排列 $a$,求出蒜头生成的图上的最大独立集。
输入格式
输入第一行一个整数 $n(2 \le n \le 1000)$。
接下里一行输入 $n$ 个整数 $a_1$, $a_2$, $\cdots$, $a_n$$(1 \le a_i \le n)$。 ### 输出格式 输出一个整数表示最大独立集的点的个数。
3
3 1 2
2