gym102501专题

K - Birdwatching GYM102501(dfs)

题意: 给定一个特定点,求有多少个点能到达该特定点,且只能通过与该点直接相连的点到达 思路: 对于所有与特定点直接相连的点设为集和S,如果存在点 a∈S,使得a能到达b∈S,则a不是所求点。 我们去掉与特定点直接相连的边,其他边建立反图,再对集和S中的点跑dfs,判断有多少个点能到达自己。如果S中的点遍历到的点的个数大于二(除了自己还有S中其他点),则说明还有其他边到达特定点。 #incl

G Swapping Places GYM102501(贪心)

题意: s种动物,l个朋友关系。n个动物排成一行,相邻为朋友的动物可以交换,求所得最小字典序串。 思路: 因为只有200个位置,那么逐位确定。 假设当前在位置 i i i,对所有种类动物进行判断,看这种动物能否交换到位置 i i i。 实际就是每种动物遍历了所有位置,复杂度为 n*s。 本题中不能交换的动物相对位置不能改变,貌似能有拓扑排序的解法 #include <iostream>

C Ants GYM102501

签到 #include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <string>#include <map>#include <cmath>using namespace std;const int maxn = 1e6 + 7;map<string,int>mp;int