摘要:
思路:使用优先队列,每次都取出先前状态中距离最短的状态,注意,入队的不是点也不是边,而是先前满足花费小于K的所有的可行状态,队列里面保存的是先前取的点的状态,这样每次弹出距离最小的状态进行更新,到最后得到的一定是满足距离最小且花费不大于K的解,一旦发现N点在状态中,就可以返回了,因为此时的状态就是最... 阅读全文
摘要:
思路:DFS全图,记录每个牧场可以到达的牛的数量,若pa[v] == K,则所有牛可以到达。#include#include#include#define MAX 10005using namespace std;typedef struct{ int to, next;}Node;Node ... 阅读全文
摘要:
思路:记忆化搜索 + DP#include#include#include#define MAX 105using namespace std;const int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};int map[MAX][MAX], vis[MAX][M... 阅读全文
摘要:
思路:BFS,最先找到的必定是最小解。#include#include#include#include#include#include#define MAX 11111using namespace std;int isprime[MAX], pre[MAX];queueq;void Chose_P... 阅读全文
摘要:
思路:floyd + 位运算。map[i][j]的二进制位前26位表示i到j路径里面字母a-z的存在情况,为1说明该字母存在,为0不存在。#include#include#include#include#define MAX 205using namespace std;string str;int... 阅读全文
摘要:
思路:ans = 每条边(u,v)*v的子树节点的w = 所有的dist[v]*w[v]之和;#include#include#include#include#define MAX 500005const long long int INF = 100000000000000;using name... 阅读全文
摘要:
求最短路径的算法有许多种,除了排序外,恐怕是ACM界中解决同一类问题算法最多的了。最熟悉的无疑是Dijkstra,接着是Bellman-Ford,它们都可以求出由一个源点向其他各点的最短路径;如果我们想要求出每一对顶点之间的最短路径的话,还可以用Floyd-Warshall。SPFA是这篇日志要写的... 阅读全文
摘要:
#include#include#include#define MAX 30 using namespace std; int map[MAX][MAX]; const int dir[4][2]={-1, 0, 1, 0, 0, -1, 0, 1}; int h, w, ans; void dfs... 阅读全文
摘要:
/************************************************************************* > File Name: Gray.cpp > Author: wangzhili > Mail: ... 阅读全文
摘要:
/************************************************************************* > File Name: phi.cpp > Author: wangzhili > Mail: ... 阅读全文