链接:https://vjudge.net/problem/UVA-11324
思路:还是一道有向图的强连通分量+缩点+DAG动态规划问题,首先主要还是熟悉tarjan的强连通分量,双连通分量(点双,边双)的不同写法。这道题有所不同,缩点的时候还要统计每个强连通分量有多少个点,把点数作为权值在新图上进行DAG的动态规划,顺便补了一下DAG的动态规划的写法,如果不清楚tarjan写法的可以看我其他几篇tarjan的题的博客,有详解
代码:
#include
#include
#include
#include
#include
using namespace std;
int t,n,m;
const int maxn = 1001;
vector G[maxn];
int dfn[maxn],low[maxn],dp[maxn],sccno[maxn],scount[maxn];
int ntime,scc_cnt;
deque qq;
int NG[maxn][maxn];
void tarjan(int u){
dfn[u] = low[u] = ++ntime;
qq.push_back(u);
for(int i=0;i