随笔分类 - 图论
摘要:10W个点的一棵树,边权为1求访问K个点要走过的最小路程BFS求出一条最长路以后,我们可以YY出其他的边都要重复走两次树上的最长路可以从任意一点开始BFS求出这点的最大距离,再把终点设置为起点再做一次BFS所以就判断K和最长路间的距离就行了 O(n) 算法 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14...
阅读全文
摘要:POJ 2485 自制prim 模版 复杂度O(ElogE) 优先队列优化#include <queue>#include <stack>#include <cstdio>#include <cstring>#include <vector>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;#define MAXN 1000#define MAXE 1000000#define INF 0x3f3
阅读全文
摘要:一开始用邻接矩阵交TLE 分析以后发现 O(n^3) = 1500^3 必须超时但是对于 邻接表 O(m*n) = 1500 * 15000 对于两秒来说完全够了所以我把木板推倒重写了一遍二分图...还是挺有成就感的...至少以后的题目都可以用把原来低效的木板推掉了都忘记说题意了...就是给你一棵树, 求最小的点能覆盖所有的边...他们说用什么树形DP做我想想貌似也能搞...但这题对于二分图木板就完全就是裸题了然后这图是无向图,所以最后的结果要/2 这个应该很容易证明了 我就不赘述了二分图邻接表木板如下/********************* Template **************
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int max(int a,int b){return ab?b:a;}#define V 205#define INF 0x3f3f3f3fint cap[V][V],flow[V][V];// cap是每条边的容量,flow是每条边
阅读全文
摘要:#include#include#include#includeusing namespace std;const int N=205;const int INF=0x3f3f3f3f;int s[N][N];//记录图的邻接矩阵int d[N];//记录图中各点的层次int n,m;int min(int a,int b){ return aQ; memset(d,-1,sizeof(d));//此处初始化要特别注意,以上版本的初始化就存在很大问题 d[1]=0;//如果处理不慎就很容易死循环 Q.push(1); while(!Q.empty()){ ...
阅读全文
摘要:/******************Kruskal********************/#include #include #include #include #include using namespace std;const int V = 101;int father[V],map[V]...
阅读全文