乙個無向圖,可能有自環,有重邊,每條邊有乙個邊權。你可以從任何點出發,任何點結束,可以經過同乙個點任意次。但是不能經過同一條邊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。output第2 - m + 1行:每行3個數s, e, w,表示從頂點s到頂點e,有一條權值為w的邊(0 <= s, e <= n - 1, 0 <= w <= 10^9)。
輸出最長路徑的長度。input示例
6 8output示例0 1 4
1 2 3
1 3 2
2 3 5
3 4 6
4 5 6
5 0 8
3 2 7
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,...
矩陣中的最長遞增路徑
矩陣中的最長遞增路徑 給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 題解 首先看到這道題,突然想到島嶼那題,每次向著四個方向不斷遞迴 只是條件是只遞迴比當前數大的數,所以使用深度搜尋,並且返回搜尋中...