图论
THE___BEST
这个作者很懒,什么都没留下…
展开
-
uva 10048 - Audiophobia(floyd 的变形)
把Floyd算法变一下形就可以了#include #include #include #include #include using namespace std;const int maxn = 100+10;const int INF = 0x7fffffff;int m, n, qu;int d[maxn][maxn];void floyd(){ for(i原创 2015-09-16 22:20:36 · 391 阅读 · 0 评论 -
ZOJ 3195(LCA模板)
题意:给一个带权图 然后q个询问 每个询问有三个数x y z,求x y z这三个点连接起来需要多少距离。LCA 对于每个询问求出任意两个点对的LCA 加和 / 2。#include #include #include #include #include #include #include using namespace std;const int dx[] = {原创 2016-05-01 16:25:37 · 424 阅读 · 0 评论 -
LCA最近公共祖先问题(Tarjan离线算法)
参考:点击打开链接觉得链接处的代码有的地方好像有问题,然后自己改了改拿了过来。。问题描述:给定一个有根树,n个节点和n-1条边 以及q个查询 查询两个点的LCA 要求按输入顺序输出q个查询的答案。#include #include #include #include #include #include using namespace std;const int原创 2016-04-30 18:08:03 · 380 阅读 · 0 评论 -
POJ 1236(tarjan+缩点)
把所有强连通分量各缩成一个点,重新建图,ans1 = 入度为0的点的个数 ans2 = max(入度为零的点的个数,出度为0的点的个数)#include #include #include #include #include #include using namespace std;const int maxn = 100 + 7;int n, k = 0, newk = 0;原创 2016-04-14 17:53:54 · 327 阅读 · 0 评论 -
强连通分量模板
#include #include #include #include #include #include #include using namespace std;const int maxn = 2000 + 7;const int INF = ~0U >> 1;vector G[maxn];int n, m, k = 0, cnt = 0;int low[maxn],原创 2016-03-02 18:04:48 · 1068 阅读 · 0 评论 -
POJ 3164(最小树形图模板题)
参考地址:点击打开链接最小树形图是从一个源点出发,选取一些边,使得能够从源点可以到达其他所有点,并且权和最小,即有向图的最小生成树。算法步骤:1.判断图的连通性,若不连通直接无解,否则一定有解。2.为除了根节点以外的所有点选择一个权值最小的入边,假设用pre数组记录前驱,f数组记录选择的边长,记所选边权和为temp。3.(可利用并查集)判断选择的的边是否构成环,原创 2016-04-08 21:10:44 · 379 阅读 · 0 评论 -
544 - Heavy Cargo
最大生成树#include #include #include #include #include using namespace std;const int maxn = 100 + 7;const int maxm = 19900 + 7;const int INF = ~0U >> 1;int n, m, kase = 0;int p[maxn];struct no原创 2016-02-21 10:05:04 · 347 阅读 · 0 评论 -
10938 - Flea circus
dfs记录路径 就行了#include #include #include #include #include #include using namespace std;const int maxn = 5000 + 7;vector G[maxn];int n, m, cnt = 0;int p[maxn], vis[maxn];bool dfs(int u, int原创 2016-03-05 11:18:15 · 378 阅读 · 0 评论 -
二分图匹配
二分图匹配思想说白了就是先从未匹配的点出发,到另一个未匹配的点结束,中间的点是未匹配 匹配的点交叉,即:未匹配 匹配 未匹配 匹配.........未匹配,这样每次这样的路都是未匹配的比匹配的点多一个,然后把未匹配的变成匹配的点,匹配的变成未匹配的,每次匹配的点都多一个,直到没有这样的道路为止#include #include #include #include #include原创 2016-03-02 22:10:43 · 375 阅读 · 0 评论 -
bellman ford最短路算法
参考地址:http://www.wutianqi.com/?p=1912#include using namespace std;const int maxnum = 100;const int maxint = 99999;// 边,typedef struct Edge { int u, v; // 起点,重点 int weight; // 边的权值}转载 2016-02-15 06:54:27 · 352 阅读 · 0 评论 -
11573 - Ocean Currents
这题必须要加优先队列优化 不然会超时#include #include #include #include #include using namespace std;const int maxn = 1000 + 7;const int INF = ~0U >> 1;const int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};const int原创 2016-02-10 20:22:42 · 480 阅读 · 0 评论 -
uva 10801 - Lift Hopping
裸最短路算法一开始因为k=0的情况应该输出0而错了几遍、#include #include #include #include #include #include #include using namespace std;const int maxn = 100+5;const int INF = ~0U >> 1;struct node { int from,原创 2015-10-05 21:06:47 · 327 阅读 · 0 评论 -
POJ 3169(差分约束 + spfa模板)
题意:n头牛。按照编号排成一排,ml个第一种条件(u, v, w)表示编号为u的牛跟编号为v的牛的距离<=w,md个第二种条件(u, v, w)表示编号为u的牛跟编号为v的牛的距离>=w,如果这n头无法排成队伍,则输出-1,如果牛1和牛n的距离无限远,则输出-2,否则则输出牛1和牛n之间的最大距离。思路:差分约束,差分约束实际上就是求解多个不等式,比如 a - b <= 2 b - c <= 5原创 2016-07-29 12:47:26 · 366 阅读 · 0 评论