顯然答案就是路徑上的次大值。因為點可以一直走,所以可以縮成dag。
然後在上面dp。
要注意,因為是路徑上面的兩點,所以不能來自同一路徑。
比如:1->2,2->4,1->3,3->4, 4不能同時繼承2,3的答案。
ac**:
#pragma gcc optimize("-ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const
int n=
4e5+10;
int n,m,q,st,a[n]
,dfn[n]
,low[n]
,scc[n]
,vis[n]
,cnt,co,mx1[n]
,mx2[n]
,deg[n]
,mx3[n]
,mx4[n]
;vector<
int> g[n]
,v[n]
; stack<
int> s;
void
tarjan
(int x)
if(dfn[x]
==low[x]
)while
(u!=x);}
}void
dfs(
int x)
}void
top()}
}signed
main()
printf
("%d "
,mx2[scc[x]])
;}return0;
}
51NOD 任務執行順序
有n個任務需要執行,第i個任務計算時佔r i 個空間,而後會釋放一部分,最後儲存計算結果需要佔據o i 個空間 o i r i 例如 執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。思路 這是乙個貪心演算法,依據執行空間 儲存空間的大小排序即...
任務執行順序(51nod
有n個任務需要執行,第i個任務計算時佔r i 個空間,而後會釋放一部分,最後儲存計算結果需要佔據o i 個空間 o i r i 例如 執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。輸入 第1行 1個數n,表示任務的數量。2 n 100000...
貪心 STL 51nod 做任務三
按左點排序 能幹就幹 幹不了加人 但這次資料非常大 手動模擬超時 需要用到優先佇列 或 mutilset 佇列能解決的set 都可以解決 set支援性更佳 所以個人更傾向於set include include include using namespace std const int maxn 1...