嘛,首先把图缩点一下之后就很好搞了 考虑一下,什么情况下可以使得加边最少,并且s可以把所有点遍历到? 很显然,对于一个入度不为0的点,一定有前继节点.... 于是乎,我们只要找到不满足有前继节点的节点就好了 详细的过程看代码... #include<bits/stdc++.h> #define MA ...
分类:
其他好文 时间:
2020-02-18 22:08:09
阅读次数:
89
先缩点构造出一颗树,然后求树的直径就好 const int maxn=3e5+5; const int maxm=6e5+5; const int inf=1e9; int head[maxn],ver[maxm],nex[maxm],tot; void inline AddEdge(int x,i ...
分类:
其他好文 时间:
2020-02-17 20:12:31
阅读次数:
86
双连通图:无向图中每两个顶点都存在完全不同的两条路径 给定一个无向图,问要给它增加多少条边可以把它变成双连通图。 用tarjan缩点,可以得到一棵树,添加(叶子结点+1)/2条边可以使其成环,也就是答案~ 为了避开重边,这题用邻接矩阵存,wa了一晚上QAQ~ #include<cstdio> #in ...
分类:
其他好文 时间:
2020-02-15 20:37:22
阅读次数:
66
URL https://loj.ac/problem/3040 简要题意 懒得写了 解法 考虑同色的两个点,它们路径上的每条边都是不能作为分割点的,不妨把路径上的点全部缩起来。这样之后所有点都是不同颜色的。 合并颜色的操作依旧是缩点,答案是(叶子个数+1)/2 实现 ...
分类:
其他好文 时间:
2020-02-15 18:33:28
阅读次数:
122
"题面" 题解 结论题 第一问直接 tarjan 第二问就是 tarjan 后缩点, DAG 中入度为 0 的点和出度为 0 的点的个数取 $min$ Code ...
分类:
Web程序 时间:
2020-02-11 20:46:45
阅读次数:
86
显然如果走到一个SCC里,那么可以把这个SCC里的权值反复走取完 连接SCC之间的边显然只能走一次(缩点后是DAG) 那么我们tarjan缩点,然后在DAG上DP,就是个带权最长路,随便DP一下就行了 边权就是w,点权需要另外计算 对每个SCC内部的边,假设边权为\(w\),那么下降次数是满足\(\ ...
分类:
其他好文 时间:
2020-02-11 11:31:29
阅读次数:
49
题目背景 缩点+DP 题目描述 给定一个 n 个点 m 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。 输入格式 第一行两个正整数 n,m 第二行 n 个整数,依次代表点权 第三至 m ...
分类:
其他好文 时间:
2020-02-10 13:23:36
阅读次数:
59
「JSOI2014」强连通图 "传送门" 第一问很显然就是最大的强连通分量的大小。 对于第二问,我们先把原图进行缩点,得到 $\text{DAG}$ 后,统计出入度为零的点的个数和出度为零的点的个数,两者取 $\max$ 就是答案。 理性证明可以看 "这里" 参考代码: ...
分类:
Web程序 时间:
2020-02-02 21:32:06
阅读次数:
95
不难看出,这是一道图论的题,只要要求在$r$,的个数最小时,$r$的个数与文章长度。 预备知识 STL之 map (内置应该是hash之类的) tarjan 缩点 树形dp 简单字符串 邻接表存边 问题分析 由于同义是单向的,我们建起了单向边,容易的是,如果一个单词可以最后回到他自己,那就把这个环上 ...
分类:
其他好文 时间:
2020-02-01 21:31:00
阅读次数:
71
题目链接:https://www.luogu.com.cn/problem/P1073。 C国有n n n个大城市和m mm 条道路,每条道路连接这 nnn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mmm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的 ...
分类:
其他好文 时间:
2020-01-30 14:29:49
阅读次数:
82