[Usaco2015 Jan]Grass Cownoisseur 题目大意:给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少正整数次对答案的贡献均为1) 数据范围:$1\le n, m\le 10^5$. 题解: 先$tarjan$缩强连通分量,因为每一个$SCC$只要能到一个点就能到整个$SCC$. 接下来我们发现,我们操作的边的两个端点会满足如下性质: 这条有向边的起点可以到$1$号点所在$SCC$…
BZOJ3887 [Usaco2015 Jan] Grass Cownoisseur Description In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-way cow paths all over his farm. The farm consists of N fields, conveniently numbered 1..N, with each…
题意: 给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少正整数次对答案的贡献均为1) =>有向图我们先考虑缩点.然后观察缩点后的图可以发现新的路径中必定只有一条边是反向的才符合条件.那么我们可以联想到某道最短路的题将边反向存一遍后分别从s和t跑一跑.那么这里bfs跑一跑就行了.然后有一个坑点:这种重建图的注意es和edges不然es会在中途就被修改掉了... #include<cstdio> #…
首先看得出缩点的套路.跑出DAG之后,考虑怎么用逆行条件.首先可以不用,这样只能待原地不动.用的话,考虑在DAG上向后走,必须得逆行到1号点缩点后所在点的前面,才能再走回去. 于是统计从1号点缩点所在点到所有走到的点的最长距离,以及所有可以走到1号的点到1号的最长距离.然后,看在哪里逆行,可以暴力枚举每条边,然后把两边连接的点用预处理好的信息更新答案即可.这个可以使用正/反向跑图加记忆化. 注意一点:这样统计是不会重复统计的,因为如果存在点可以从1号经过,逆行之后又经过这个点,回到1号点,那就有…
BZOJ_3887_[Usaco2015 Jan]Grass Cownoisseur_强连通分量+拓扑排序+DP Description In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-way cow paths all over his farm. The farm consists of N fields, conveniently numbered 1…
[Usaco2015 Jan]Grass Cownoisseur 题目 给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过? (一个点在路径中无论出现多少正整数次对答案的贡献均为1) INPUT The first line of input contains N and M, giving the number of fields and the number of one-way paths (1 <= N, M <= 100,…
分层建图,反向边建在两层之间,两层内部分别建正向边,tarjan缩点后,拓扑排序求一次1所在强连通分量和1+n所在强联通分量的最长路(长度定义为路径上的强联通分量内部点数和).然后由于1所在强连通分量和1+n所在强联通分量是相同的点,所以路径长度相当于有一头不计算,也就是一个半开半闭区间的形式. 最后还可能答案不用跑反向边,取一个较大值就行了 CODE #include <bits/stdc++.h> using namespace std; const int MAXN = 200005;…
题意 : 给出含有 N 个点 M 条边的图(可能不连通或者包含环),每个点都标有一个小写字母编号,然后问你有没有一条路径使得路径上重复字母个数最多的次数是多少次,例如图上有条路径的顶点标号顺序是  abcaca 那么答案就是 3 ,因为 a 出现了三次,如果答案无穷大则输出 -1 分析 :  不难联想到是一个动态规划类型的题目 定义 DP[i][j] 为到达顶点 i 时字母 j 最多出现了多少次 显然如果图中有环的话就输出 -1 这也就是说如果图中不存在合法拓扑排序就说明有环 如果存在拓扑排序,…
http://www.lydsy.com/JudgeOnline/problem.php?id=3887|| https://www.luogu.org/problem/show?pid=3119 Description In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-way cow paths all over his farm. The farm con…
考试的时候忘了缩点,人为dfs模拟缩点,没想到竟然跑了30分,RB爆发... 边是可以重复走的,所以在同一个强连通分量里,无论从那个点进入从哪个点出,所有的点一定能被一条路走到. 要使用缩点. 然后我们枚举每一条边,考虑如果将这条边反置的话,就是这条边的终点到1的点的权值(正向的)加上起点到1的点的权值(反向的):例:→→←→→ 每个点到1的正向反向距离可以用两遍SPFA解决出来. 先使用tarjan缩点,记录每个点的权值,缩点后权值变为强连通分量中点的个数.缩完点之后重新建图,正向边存1,反向…