1、DAG最长路径(不记录路径)
int dfs1(int s) { if(dis[s] > 0)return dis[s]; for(int i = 0; i < G[s].size(); ++i) { int to = G[s][i]; dis[s] = max(dis[s], dfs1(to) + w[s][to]); } return dis[s]; }
2、DAG最长路径(记录路径)
int dfs1(int s) { if(dis[s] > 0)return dis[s]; for(int i = 0; i < G[s].size(); ++i) { int to = G[s][i]; int tmp = dfs1(to) + w[s][to]; if(dis[s] < tmp){ dis[s] = tmp; next[s] = to; } } return dis[s]; }