描述
给出有n个点, m条边的无向图, 每次修改一条边的权值, 求修改后的最小生成树的大小. 修改次数 ≤ 50000.
分析
还是CDQ分治, 但是有点特殊. 目前的CDQ分治还是停留在看题解看别人代码才理解的层面.有一些边一定在部分修改后的最小生成树中, 这是优化的中心思想吧.然后一个减少边的操作, 一个减少点的操作. 看课件吧.减少点的方法是缩点, 用并查集.一开始想用...
分类:
其他好文 时间:
2015-03-28 11:43:03
阅读次数:
197
首先,强连通分量可以缩点,所有缩点后的图一定是一个有向无环图,出度为0的点受其他出度不为0的点的仰慕.因为要求的是受其他所有点仰慕的点的个数(强连通内互相仰慕),所以,当只有一个出度为0的点时,输出它所在的强连通分量的顶点个数就是答案. 1 #include 2 #include 3 ...
分类:
其他好文 时间:
2015-03-28 01:08:26
阅读次数:
149
点击打开链接
Grouping
Time Limit: 2 Seconds Memory Limit: 65536 KB
Suppose there are N people in ZJU, whose ages are unknown. We have some messages about them. The i-th message shows that th...
分类:
其他好文 时间:
2015-03-21 18:41:36
阅读次数:
154
双连通缩点+求树的直径,图论基础题目。 1 /* 4612 */ 2 #pragma comment(linker, "/STACK:1024000000,1024000000") 3 #include 4 #include 5 #include 6 #include 7 #i...
分类:
其他好文 时间:
2015-03-20 23:26:12
阅读次数:
203
没想到手感还在~ 不需要重新建图,只要根据条件改改权值即可。还跑k次SPFA~
#include
#include
#include
#include
#include
using namespace std;
const int MAXN=600; const int MAXE=500*500*2+100;
int e[MAXE][3];int head[MAXN];int nume;
in...
分类:
其他好文 时间:
2015-03-19 16:21:25
阅读次数:
168
题目地址:POJ 2762
先缩点,然后判断拓扑网络每层的个数是否为1(我承认如果事先不知道这题需要拓扑排序我是想不出来这点的。。。)。因为假如有一层为2的话,那么从此之后这两个岔路的点就不可能从一点到另一点的。
代码如下:#include
#include
#include
#include
#include <al...
分类:
编程语言 时间:
2015-03-13 20:45:23
阅读次数:
176
题目地址:POJ 2375
对每个点向与之相邻并h小于该点的点加有向边。然后强连通缩点。问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者即可。注意,当强连通分量只有一个的时候,答案是0,而不是1.
代码如下:
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-03-12 19:15:06
阅读次数:
197
大意:告诉你有n个点 m条单向边 问最少添加多少条边能将该图变成强连通分析:先用强连通进行缩点 缩成一个有向无环图然后我们考虑如何才能使 这个有向无环图变成一个强连通我的第一反应是求最小路径覆盖 然后再首尾相连 结果时间复杂度承受不住其实想到这里可以大胆猜想一下了 刚刚提到了 首尾连接这个思想我们只...
分类:
其他好文 时间:
2015-03-12 19:01:55
阅读次数:
162
题目地址:POJ 2186
先用强连通分量缩点,然后形成一棵树。我第一次用的判定条件是入度为分量数-1。虽然这种情况下确实正确。但是在树中也是有间接关系的。这个条件并不是充分必要条件。正确的做法是逆序建树,然后找根结点。而且根结点有且只有一个才可以。所以转化成了找出度为0的分量。
代码如下:
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2015-03-12 17:13:17
阅读次数:
168
题目地址:HDU 2242
先用双连通分量缩点,然后形成一棵树,然后在树上做树形DP,求出每个点的子树和。然后找最小值即可。需要注意一下重边的问题,第一次返回父节点时可以忽略,因为这是反向边,然后之后再返回的时候就不是反向边了。不能忽略了。
代码如下:
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2015-03-12 09:50:38
阅读次数:
173