題目:
所有任務合起來構成乙個dag,因為任務可以並行,所以從無前驅的節點到無後繼的節點的所有任務路徑中,最耗時的那一條就是所需要的總時間,因為這樣的搜尋中已經考慮了乙個任務所有可能的開始時間。
#include #include #include using namespace std;
int n, c[10005] = ;
int f[10005];
vectorch[10005];
int dp(int x)
f[x] += c[x];
return f[x];
}int main()
while(k--)
} //dp
printf("%d\n", dp(0));
} return 0;
}
樹形dp是dfs的方式,實際上由於我們的最終目的是想找到最長路徑,還可以採取類似spfa的思想進行拓撲圖的遍歷
#include #include #include #include #include using namespace std;
int n, c[10005];
int f[10005];
vectorch[10005];
queueq;
bool inq[10005];
int bfs()
} }return res;
}int main()
while(k--)
} //bfs
printf("%d\n", bfs());
} return 0;
}
POJ 3249 記憶化搜尋,,,,DAG最長路
題目大意 給出n個點,m條邊,每個點都提供了相對的點權值,然後給出相連著的邊,問從起點走到終點最大利潤值。起點是入度為0的點,終點是出度為0的點。思路1 spfa求最長路,正向建邊tle,反向建邊4400msac。2 記憶化搜尋,每次都儲存當前點到終點獲得的最大利潤。ac 搜尋 1844ms inc...
DAG最長路(最短路)
dag就是有向無環圖。dag上的最長或者最短路是很重要的一類問題。很多問題都可以轉化為dag上的最長或者最短路徑的問題。dag求最短和最長路的方法一樣。本演算法主要解決2個問題 1 求整個dag中的最長路徑 即不固定起點,也不固定終點 2 固定終點,求dag的最長路徑。dp i 表示從i 號頂點出發...
動態規劃四(DAG最長路)
在圖的有關知識中已經了解了dag就是有向無環圖,其中計算最長路 關鍵路徑 的做法非常複雜,這裡介紹更簡單的方法。求整個dag的最長路徑 即不固定起點和終點 固定終點,求dag的最長路徑。給定乙個有向無環圖,怎樣求解整個圖的所有路徑中權值之和最大的那條。令dp i 表示從i號頂點出發能獲得的最長路徑長...