随笔分类 - 图
摘要:1、给定一棵树,每条边都有一定的权值,q次询问,每次询问某两点间的距离。 2、这样就可以用LCA来解,首先找到u, v 两点的lca,然后计算一下距离值就可以了。 这里的计算方法是,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u,
阅读全文
摘要:1、输出测试用例中是最近公共祖先的节点,以及这个节点作为最近公共祖先的次数。 2、最近公共祖先,离线Tarjan算法 3、 /* POJ 1470 给出一颗有向树,Q个查询 输出查询结果中每个点出现次数 */ /* 离线算法,LCATarjan 复杂度O(n+Q); */ #include<iost
阅读全文
摘要:1、输入树中的节点数N,输入树中的N-1条边。最后输入2个点,输出它们的最近公共祖先。 2、裸的最近公共祖先。 3、 dfs+ST在线算法: /* LCA(POJ 1330) 在线算法 DFS+ST */ #include<iostream> #include<stdio.h> #include<s
阅读全文
摘要:题意:判断最小生成树是否唯一。 思路:求出次小生成树,如果与最小生成树相等,则不唯一。 prim: #include<iostream> #include<stdio.h> #include<string.h> using namespace std; /* 求最小生成树时,用数组Max[i][j]
阅读全文
摘要:题意:裸最小生成树,主要是要按照字典序。 思路:模板 prim: #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define INF 0x7fffff
阅读全文
摘要:题意:n个点修路,要求总长度最小,但是有两个点p、q必须相连 思路:完全图,prim算法的效率取决于节点数,适用于稠密图。用prim求解。 p、q间距离设为0即可,最后输出时加上p、q间的距离 prim算法: #include<iostream> #include<stdio.h> #include
阅读全文
摘要:题意:A国家有M个代表,B国有N个代表,其中有K对代表可以进行谈判(一个是A国的,一个是B国的),并且每一个代表至少被包含在其中一对中(也就是说,每个人可以至少找到另外一个人谈判),每一对谈判需要一对电话联系(一对电话联系数目算1),现在使每个人都能进行电话联系的最少联系数目 思路:既然是求最少的联
阅读全文
摘要:题意:人与人之间满足4个条件之一即不能成为一对(也就说这4个条件都不满足才能成为一对),求可能的最多的单身人数。 思路:把男女分为两部分,接下来就是二分图的匹配问题。把能成为一对的之间连边,然后求出最大匹配。题目要求的是最大独立数。 最大独立数=顶点数-最大匹配数 #include<iostream
阅读全文
摘要:题意:n个农场,求把所有农场连接起来所需要最短的距离。 思路:prim算法 课本代码: 另外,这道题也可以用 Kruskal算法,代码如下:
阅读全文
摘要:题意:给出n个村庄之间的距离,再给出已经连通起来了的村庄。求把所有的村庄都连通要修路的长度的最小值。 思路:Kruskal算法 课本代码: 代码2:加了mark标记长度是否存在,代码中 为添加部分
阅读全文
浙公网安备 33010602011771号