博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4126(prim+树形dp)
阅读量:5879 次
发布时间:2019-06-19

本文共 911 字,大约阅读时间需要 3 分钟。

题目链接:

思路:我们可以先求最小生成树,对于最小生成树的每一条边,我们要找到它的最佳替代边,使其价值最小。

具体实践方法:

假设两个各自连通的部分分别为树A,树B,dp[i][j]表示树A中的点i到树B(点j所在的树的最近距离),这个很容易用dfs实现,然后通过求出的dp[i][j],再用一个dfs求出树B到树A的最近距离(就是枚举树A中的所有点 到 树B的最近距离,取其中的最小值),这个求出来的值其实就是我们要求的最佳替代边,将它保存到一个数组中即可。总的时间复杂度为O(n^2)。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define MAXN 3030 8 #define inf 1000000000 9 typedef __int64 LL; 10 vector
edge[MAXN]; 11 int map[MAXN][MAXN]; 12 int lowcost[MAXN]; 13 int nearvex[MAXN]; 14 int n,m,q; 15 LL sumweight; 16 int dp[MAXN][MAXN];//树A中的i点到树B中的点j的最近距离 17 int mindist[MAXN][MAXN];//保存最佳替换边 18 bool mark[MAXN]; 19 20 void Prim(int u0) 21 { 22 memset(mark,false,(n+2)*sizeof(int)); 23 for(int i=1;i
View Code

ps:hdoj上G++能过,但不知C++为何就过不了呢。

转载地址:http://iqdix.baihongyu.com/

你可能感兴趣的文章
解析vue2.0的diff算法
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
细数Java的语法糖(一): 用于字符串拼接的 "+" 运算符
查看>>
java B2B2C Springcloud仿淘宝电子商城系统-Zipkin服务端配置
查看>>
函数式点滴--高阶函数及抽象
查看>>
Web聊天工具的富文本输入框
查看>>
动手实现AsyncTask v1.1
查看>>
java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化...
查看>>
Runc和CVE-2019-5736
查看>>
JS专题之数组展开
查看>>
javaScript原型、原型链
查看>>
55. Jump Game
查看>>
理解AJAX
查看>>
Java到底能干嘛?
查看>>
Android4.4 及以下TextView,Button等控件使用矢量图报错
查看>>