A1013 Battle Over Cities
思路:通过DFS找连通分量的个数。
1 | #include <cstdio> |
注意:每个节点都需要遍历
A1021 Deepest Root
思路:并查集查找几个集合即为几个连通分量,从一个节点出发找到最深的节点,再从找到的节点出发找最深的节点,这两部分节点并集即为最深的集合。
1 | #include <cstdio> |
注意:并查集初始化,isRoot数组的作用是确认根节点, 下标从1开始,每个节点不要搞错。
A1076 Forwards on Weibo
BFS查找小于层数的节点
1 | #include <stdio.h> |
A1003 Emergency
思路:Dijkstra算法求最短路径。
1 | #include <cstdio> |
1030 Travel Plan
思路:Dijkstra + DFS
1 | #include <cstdio> |
注意点:无向图,建立邻接矩阵时,两个方向都有初始化。一些细节处理。记得初始化fill,G[][],d[],vis[]
A1018 Public Bike Management
思路:首先DFS找最短路径,DFS找第二和第三条件最小的
1 | #include <stdio.h> |
注意,need和remain那块太难想到了
A1072 Gas Station
思路:Dijkstra + DFS关键要把加油站也加进去,序号在住所后,无需管四舍五入.
1 | #include <cstdio> |
注意,在d[j]>minDis 之后要设定minDis = -1,不然max会被设为INF;
A1087 All Roads Lead to Rome
思路:Dijkstra + DFS,常规思路
1 | #include <cstdio> |
注意:下标啊,检查了半小时,总是搞错。happy[tempPath[i]] 写成happy[i]检查半天,不然一遍过了.