題意不再贅述
有向圖跑完tarjan縮點之後,就是一張有向無環的dag,那麼求一條點權最大的路徑就可以在拓撲圖上跑最長路徑,然後在每個點出棧的時候,更新答案,答案就有了2333
**
//by acermo
#include#include#include#include#include#include#include#includeusing namespace std;
const int m=300050;
int n,m,ti,ind=0;
int dfn[m],low[m],fa[m],vis[m];
int c[m],cf[m],in[m],dis[m];
stacks;
vectorv[m];
vectorg[m];
void tarjan(int x)
for (int i=1;i<=n;i++)
if (!dfn[i]) tarjan(i);
built();top();
return 0;
}
縮點 洛谷P3387
給定乙個n個點m條邊有向圖,每個點有乙個權值,求一條路徑,使路徑經過的點權值之和最大。你只需要求出這個權值和。允許多次經過一條邊或者乙個點,但是,重複經過的點,權值只計算一次。第一行,n,m。第二行,n個整數,依次代表點權。第三至m 2行,每行兩個整數u,v,表示u v有一條有向邊。共一行,最大的點...
模板 縮點 洛谷p3387
縮點 dp 給定乙個n個點m條邊有向圖,每個點有乙個權值,求一條路徑,使路徑經過的點權值之和最大。你只需要求出這個權值和。允許多次經過一條邊或者乙個點,但是,重複經過的點,權值只計算一次。輸入格式 第一行,n,m 第二行,n個整數,依次代表點權 第三至m 2行,每行兩個整數u,v,表示u v有一條有...
洛谷P3387 模板 縮點
kma縮點之後很明顯是個dag,跑一遍toposort順便dp 方程 ans v max ans u w v ans v ans是到這個連通塊的最大點權和,w是這個連通塊的點權 注意縮點之後兩個連通塊之間可能會有很多邊,從連通塊內不同的點發出,正反分別只能連一次,否則toposort會涼 inclu...