最長遞增路徑

2021-08-09 12:35:12 字數 1215 閱讀 7239

乙個無向圖,可能有自環,有重邊,每條邊有乙個邊權。你可以從任何點出發,任何點結束,可以經過同乙個點任意次。但是不能經過同一條邊2次,並且你走過的路必須滿足所有邊的權值嚴格單調遞增,求最長能經過多少條邊。

以此圖為例,最長的路徑是:

3 -> 1 -> 2 -> 3 -> 2 或

3 -> 1 -> 2 -> 3 -> 4 長度為4。

input

第1行:2個數n, m,n為節點的數量,m為邊的數量(1 <= n <= 50000, 0 <= m <= 50000)。節點編號為0 至 n - 1。

第2 - m + 1行:每行3個數s, e, w,表示從頂點s到頂點e,有一條權值為w的邊(0 <= s, e <= n - 1, 0 <= w <= 10^9)。

output

輸出最長路徑的長度。
input示例

6 8

0 1 4

1 2 3

1 3 2

2 3 5

3 4 6

4 5 6

5 0 8

3 2 7

output示例

4#include #include #include using namespace std;  

const int maxn = 50005;

struct edge

;edge edges[maxn];

int dp[maxn];

int temp[maxn];

bool cmp(const edge &a, const edge &b)

int main()

sort(edges, edges + m, cmp);

int prevedge = -1;

for (int i = 0; i < m; i++)

for (int j = prevedge + 1; j <= i; j++)

prevedge = i;

} }int result = 0;

for (int i = 0; i < n; i++)

cout << result << endl;

return 0;

}

最長遞增路徑(YYOJ)

description 給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外。input 測試樣例由多組測試資料組成。每組測試資料第一行輸入兩個正整數n,m代表矩形的行數和列數 1 n,m 500 接下來輸入n m 個數...

最長遞增路徑(多解)

給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 示例 1 輸入 nums 9,9,4 6,6,8 2,1,1 輸出 4 解釋 最長遞增路徑為 1,2,6,9 示例 2 輸入 nums 3,4,5 3,...

矩陣中的最長遞增路徑

矩陣中的最長遞增路徑 給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 題解 首先看到這道題,突然想到島嶼那題,每次向著四個方向不斷遞迴 只是條件是只遞迴比當前數大的數,所以使用深度搜尋,並且返回搜尋中...