题意:给你一张有向图,n个点,m条边,要求同一个环里的边不可以全部都为同一种颜色。问最少要涂多少种颜色,并依次给每条边编颜色号。 思路:简单的拓扑想法,一开始我用BFS的拓扑发现一直RE3,然后我就改了个很简单的DFS拓扑的样子,用邻接表vector连接每一个点。 在我用DFS的时候发现了一个问题, ...
分类:
其他好文 时间:
2020-04-06 15:34:52
阅读次数:
80
https://www.luogu.com.cn/problem/P3329 最小割树的用处不仅是做这些裸题,了解这个定理,会对一类问题有更深的思考。 最小割树的实现: 每次取两个点u,v,求它们的割,并在最小割树上给它们连边,权值为这个割。 然后按照S能走到的和能走到T的,分成两类点,继续递归建树 ...
分类:
其他好文 时间:
2020-04-05 14:02:43
阅读次数:
63
解题思路: 1、先按第一跳距离升序 2、合法第一跳加入队列中 3、(广度优先)访问队列中的结点,每访问一个结点并将其可到达的子孙加入队列中,直至访问至某个结点可以到岸结束 #include <stdio.h> #include <string.h> #include <math.h> #define ...
分类:
其他好文 时间:
2020-04-05 11:43:29
阅读次数:
97
1 #include<stdio.h> 2 #define MAXN 10 3 int g[MAXN][MAXN],vis[MAXN],n,e; 4 void init(); 5 void read(); 6 void BFS(int x); 7 void DFS(int x); 8 int mai ...
分类:
其他好文 时间:
2020-04-04 17:27:20
阅读次数:
79
总时间限制: 1000ms 内存限制: 65536kB描述 你现在身处一个R*C 的迷宫中,你的位置用"S" 表示,迷宫的出口用"E" 表示。 迷宫中有一些石头,用"#" 表示,还有一些可以随意走动的区域,用"." 表示。 初始时间为0 时,你站在地图中标记为"S" 的位置上。你每移动一步(向上下左 ...
分类:
其他好文 时间:
2020-04-04 13:04:33
阅读次数:
273
什么时候应该使用BFS 图的遍历: 1. 层级遍历 2. 由点及面 3. 拓扑排序 最短路径: 仅限简单图(图中每条边长度都是1,且没有方向)求最短路径。 二叉树的基本概念一、二叉树的概念:一棵二叉树是节点的一个有限集合,该集合或者为空,或者由一个根节点加上两棵左子树和右子树组成 二、二叉树的特点: ...
分类:
其他好文 时间:
2020-04-04 00:13:39
阅读次数:
67
一、广搜的特性(队列状态之特性) 当使用BFS遍历一张无权图,每次从队列中取出队首进行一系列扩展,将扩展成功结点放入队尾中; 这样的操作会使得整队列满足“两段性”,即对于这张搜索树中队列只会保留两层的结点; 证明: 1. 第p层结点扩展时只会扩展第p+1层结点,不会越级扩展p+k层结点(p = 1& ...
分类:
其他好文 时间:
2020-04-04 00:06:00
阅读次数:
69
在给定的网格中,每个单元格可以有以下三个值之一: 值?0?代表空单元格; 值?1?代表新鲜橘子; 值?2?代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 1。 示例 1: 示例 2: ...
分类:
其他好文 时间:
2020-04-03 23:34:33
阅读次数:
57
DFS的复杂度分析: 对于邻接表的存储方式:因为邻接表中每条链表上的从第2个结点到表尾结点一定是表头结点的邻接点,所以遍历表头结点的邻接的过程中只需要遍历这些顶点即可,无需遍历其他的顶点,所以遍历某个顶点的所有邻接点的复杂度为O(ei), ei为每个顶点的邻接点个数,也就是每条链表的边数。所以邻接表 ...
分类:
其他好文 时间:
2020-04-03 18:31:53
阅读次数:
179
" 由斜杠划分区域" 在由 1 x 1 方格组成的 N x N 网格 中,每个 1 x 1 方块由 、`\` 或空格构成。这些字符会将方块划分为一些共边的区域。 (请注意,反斜杠字符是转义的,因此 用 表示。)。 返回区域的数目。 解题思路 我们可以将斜杠转换成3 3的矩阵,因为必须3 3之后才不会 ...
分类:
其他好文 时间:
2020-03-30 23:34:20
阅读次数:
71