51nod 1274 最长递增路径
因为边权递增,按最小生成树的顺序 dp,设状态 \(dp[i]\) 为 \(i\) 点的最长路径长度,但是需要单调递增,所以考虑可以同时更新(先将原dp数组储存下来,再用新数组的值更新原 dp 数组),答案为 \(max(dp[i])\)。
#include<bits/stdc++.h> using namespace std; #define ll long long const int N=5e5+10; int n,m; struct ss{ int u,v,w; }e[N]; bool cmp(ss g,ss h){ return g.w<h.w; } ll dp[N],f[N]; int main() { ios::sync_with_stdio(false); cin>>n>>m; for(int i=1;i<=m;i++){ cin>>e[i].u>>e[i].v>>e[i].w; } sort(e+1,e+1+m,cmp); int last=0; for(int i=1;i<=m;i++){ if(e[i].w==e[i+1].w){ continue; } for(int j=last+1;j<=i;j++){ f[e[j].u]=dp[e[j].u]; f[e[j].v]=dp[e[j].v]; } for(int j=last+1;j<=i;j++){ dp[e[j].u]=max(dp[e[j].u],f[e[j].v]+1); dp[e[j].v]=max(dp[e[j].v],f[e[j].u]+1); } last=i; } ll ans=0; for(int i=0;i<n;i++){ ans=max(ans,dp[i]); } cout<<ans; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具