B - Qualification ContestB - Qualification Contest
思路:由于要按照字典序输出,我们可以使用#include <algorithm>
中的 sort 函数来排序。
解本题用到的知识点:
1.遍历赋值
for (string s : a)
这是一个C++11中的范围for循环语法,其中:
- `string s`:定义了一个字符串类型的变量`s`,用于存储循环中的每个元素。
- `a`:是一个可迭代的容器,例如数组、向量、列表等等。
- `:`:是一个分隔符,用于将容器中的每个元素分隔开来。
- `a`:是要遍历的容器。
- 循环体中的代码将会对容器`a`中的每个元素进行迭代,将每个元素依次赋值给`s`变量,然后执行循环体中的代码。
2.关于#include <algorithm>
<algorithm>是C++标准库中的一个头文件,其中包含了许多常用的算法函数,例如:
1. 排序算法:sort、stable_sort、partial_sort、nth_element等。
2. 查找算法:find、find_if、binary_search、lower_bound、upper_bound等。
3. 数值算法:accumulate、inner_product、partial_sum、adjacent_difference等。
4. 修改算法:copy、copy_if、replace、replace_if、fill、fill_n等。
5. 集合算法:set_union、set_intersection、set_difference、merge等。
6. 堆算法:make_heap、push_heap、pop_heap、sort_heap等。
7. 其他算法:reverse、rotate、unique、next_permutation、prev_permutation等。
这些算法函数可以大大简化程序的编写,提高代码的可读性和可维护性。
C - Don’t be cycleC - Don’t be cycle
思路:
这道题目是一道图论题目,需要我们计算删除多少条边可以使得图中不再存在环。
首先,可以发现,对于一个无向图,如果它存在环,那么一定存在一个环上的边可以被删除而不影响图的连通性。因此,可以考虑不断删除环上的边,直到图中不存在环为止。
具体来说,可以使用并查集来维护图的连通性,并使用 DFS 或 BFS 来找到环上的边。具体来说,可以从任意一个节点开始进行 DFS 或 BFS,对于每个节点,记录它的父节点,如果在遍历过程中遇到了一个已经被访问过的节点,且这个节点不是当前节点的父节点,那么就说明存在环,可以沿着父节点一直回溯到环上的边,然后将这条边删除。