图论
会飞的蟋蟀
学习中!!
展开
-
USACO 2.4.3 牛的旅行 Cow Tours
题解 图论入门级的题目。算最短路径,处理需要点技巧。代码很巧妙,琢磨一下啊。 Code #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #inc原创 2018-09-05 11:59:54 · 355 阅读 · 0 评论 -
USACO 2.4.4 回家 Bessie Come Home
题解 最短路径题,以Z为起点,用Dijkstra算法秒杀。注意会有重复边要取最小。 Code // head files excluded using namespace std; const int INF = 1e8; int n,m; int dis[53][53]; int sd[52]; bool vis[52]; void init(){ for(int i=0;...原创 2018-09-05 16:47:05 · 271 阅读 · 0 评论 -
USACO 3.1.1 最短网络 Agri-Net 【模版】
题解 最小生成树裸题。Kruskal方法解答,用并查集对节点检查合并。代码很简练。 Code // head files excluded using namespace std; int n,m,k; struct edge{ int x,y,v; } cot[20000]; int f[200]; bool cmp(edge &a, edge &b){ ...原创 2018-09-10 15:01:22 · 261 阅读 · 0 评论 -
LeetCode 207. Course Schedule
题解 这题就是拓扑排序,也可以dfs查环,思路简单,注意下如何用数据结构表示。 可参考的英文题解含DFS/BFS Code class Solution { public: bool canFinish(int n, vector<pair<int, int>>& pres) { vector<unordered_set<int...原创 2018-10-02 15:26:15 · 160 阅读 · 0 评论 -
LeetCode 684. Redundant Connection [模版]
题解 这题就是并查集。然后我想总结下并查集的写法。 主要实现两块,union & find。 设p[ i ]代表 i 的父类。 find() 主要就是查找i的父类集合 // 无修改 int find_1(int i){ while(p[i]!=i) i=p[i]; return i; } // 压缩路径 int find_2(int i){ if(p[i]!=i) p[i...原创 2018-10-11 11:43:06 · 243 阅读 · 0 评论 -
LeetCode 675. Cut Off Trees for Golf Event
题解 排序+BFS最短路。 思路比较直接吧,按树高顺序依次求之间的最短路径。 注意这次BFS的写法不太一样,不用开等大小矩阵存最短长度。 Code int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int cutOffTree(vector<vector<int>>& forest) { if(forest.e...原创 2018-10-27 10:21:46 · 165 阅读 · 0 评论 -
LeetCode 787. Cheapest Flights Within K Stops
题解 这题看似最短路径,但是暗藏变化。 首先想到dfs,搜索到所有由始至终的可行路径,记录最小cost即可。 但是这题编程实现有很多小花招,怎么剪枝,一个是k(步进的次数), 二是cost,都可以用来减小搜索空间。 再者,就是贝尔福特算法,非常适合这题,因为此题有个k的限制。 当然应用的时候需要修改一点,原本是重复|V|-1次的,此时只要k+1次了。 值得注意的是,在每一轮更新dis[]数组的时候...原创 2018-11-03 13:01:27 · 285 阅读 · 0 评论