P3119 [USACO15JAN]草鉴定Grass Cownoisseur 缩点 topo或最长路

题意:n个点 m条有向边,能够来回走一个点,问在能够逆行一次的状况下最多有能通过多少个不一样的点。c++ 解: 先缩点去环建新图,新图建正序(表示以1为起点到达的点)和逆序(以1为终点到达的点) ,而后最长路求出从1到每一个点通过不一样点的最大数目 正向.f[i]和反向.f[i] ,最后枚举每一条边,计算ans和当前边两点最大值。 输出 ans - sum[belong[1]] ,由于这个重复了。
相关文章
相关标签/搜索