有向图缩点
题目
给定一个 n n n 个点 m m m 条边的有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和
允许多次经过一条边或者一个点,但是重复经过的点,权值只计算一次
输入
输出
共一行,最大的点权之和
输入样例
2 2
1 1
1 2
2 1
输出样例
2
解题思路
这题是一题模板题,我们要进行缩点,既是把一个强连通子图缩成一个图,然后维护其性质
然后我们可以发现,所有的强连通的点都可以进行捆绑,进行缩点后再进行 D P DP DP
程序如下
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int to, nxt;
}e[100001], ee[100001];
int n, m, a[10001], head[10001], KK, st[10001], tot, top;
int x, y, dfn[10001], low[10001], num, in[10001], ans;