![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
zzk_233
这个作者很懒,什么都没留下…
展开
-
NOIP2017 Day1 T3 逛公园(spfa+dfs)
原来k≤50。。我还担心开不下。。 设代表当前点在误差小于等于k时到达终点的情况数量 首先求出n到每个点的最短路。然后dfs,每次如果dis[to]-dis[u]+edge[i].val≤k那么就可以更新。如果搜过的点出现过那么直接-1 最后返回dfs的值(也就是f[1][K])即可 #include<cstdio> #include<algorithm> #in...原创 2018-10-01 11:05:11 · 207 阅读 · 0 评论 -
noip模拟赛(关于欧拉回路的一点想法)
题目大意:给出n个点m条边,问有多少种方案可以走m-2条边2次,走2条边1次。边为双向边。无重边,有自环。 这道题用到了欧拉回路的一些思想(考试的时候我是通过对拍出所有情况讨论过的!) 可以理解成花一个一笔画,共用了2*m-2条边。这种用不重复的边走完全图的操作就是欧拉回路。 而根据欧拉回路的性质,只有所有的点的度都是偶数或者只有两个点的度是奇数就可以满足。 而因为是双向边,所以所有点的度...原创 2018-10-16 10:26:29 · 177 阅读 · 0 评论 -
codeforces 1005F Berland and the Shortest Paths
题目大意:给出n个点,m条边,和一个k,要求构成一棵树,每个点到1的距离都是原图中的最短路,输出有多少种。边权为1 如果小于等于k种,就输出所有情况,以字符串的形式表示每条边是否选择,边的编号按照读入顺序。大于k种就随便输出k种。 据说这叫最短路树。。。 因为边权为1,所以考虑每个点最短的情况一定是从一个连向他的最短的点+1得到的。所以从1开始bfs,找到每个点的最短距离。 然后枚举每条边...原创 2018-10-29 23:39:57 · 164 阅读 · 0 评论 -
codeforces 1051F The Shortest Statement
给出n个点,m条边求两点之间的最短路(m-n≤20)。 看起来很难其实挺好写的,先dfs一遍,把所有跟环有关的边(也就是没遍历的边)的相关点存出来,然后求出全图到他们每个 点的最短路,最后求两点间距离的时候可以当做求两点到开始的dfs树上lca的距离和与通过这些跟环右边的点的最短路来更新 因为m-n≤20,所以最多40个点。 #include<cstdio> #include...原创 2018-11-01 20:40:41 · 130 阅读 · 0 评论 -
codeforces 1042F Leaf Sets
题目大意:给定一棵n个点的树,将叶子节点分为数个集合,使集合里点对最长距离不超过k,求最少集合数。 贪心,考虑一个非叶节点,它的下面的叶子结点对当前点之间的距离排序之后,当这个叶子结点和比它小的一个的和大于k的 时候,代表后面的每一个叶子结点都要新开一个集合,而之前的可以继续作为一个集合向上更新。最终会剩下一个集合,所以 答案要+1。注意要选择一个度数不为1的点作为开始点(就是非叶节点)。 ...转载 2018-11-01 21:08:02 · 193 阅读 · 0 评论