NEUACM1132: Renew MST Quickly 增量最小生成树
题目链接:http://acm.neu.edu.cn/hustoj/problem.php?id=1132
和UVa11354很类似
题意:
原先有一棵树,每次加一条边,看最小生成树大小;
这个和增量最小生成树,还是有一点点差别的,就是,正版增量最小生成树,是每次加入一条边后,删掉那个换里面的最大权,当然这里没有这个;
每次的找LCA,我猜可能LCA都会超时吧,没事过,也有可能可以,但是,因为是一直是之前的那棵树,还不如一次性算出来dis i 到 j 的最长路;
#include <bits/stdc++.h> using namespace std; const int maxn = + ; struct Edge
{
int from,to,dist;
}; vector<Edge> G[maxn];
int pa[maxn];
bool vis[maxn];
int dis[maxn][maxn]; void dfs(int u,int fa)
{
int d = G[u].size();
for(int i=; i<d; i++)
{
int v = G[u][i].to;
if(v!=fa)
dfs(v,pa[v]=u);
}
} void _dfs(int k,int cur,int cost) {
vis[cur] = ; int d = G[cur].size();
for(int i=;i<d;i++) {
if(!vis[G[cur][i].to]) {
dis[k][G[cur][i].to] = max(cost,max(dis[k][G[cur][i].to],G[cur][i].dist));
int v = G[cur][i].to;
_dfs(k,v,dis[k][v]);
}
} } int main()
{
int n;
int kase = ;
while(scanf("%d",&n)!=EOF)
{
printf("Test #%d\n",++kase); for(int i=;i<n;i++)
G[i].clear(); int sum = ;
for(int i=; i<n-; i++)
{
int u,v,d;
scanf("%d%d%d",&u,&v,&d);
u--;
v--;
sum+=d;
G[u].push_back((Edge)
{
u,v,d
});
G[v].push_back((Edge)
{
v,u,d
});
dis[u][v] = d;
dis[v][u] = d;
}
pa[] = -;
dfs(,-); for(int i=;i<n;i++) {
memset(vis,,sizeof(vis));
vis[i] = ;
_dfs(i,i,);
} int q;
scanf("%d",&q); while(q--)
{
memset(vis,,sizeof(vis));
int u,v,d;
scanf("%d%d%d",&u,&v,&d);
u--;
v--; int maxx = ; maxx = dis[u][v]; if(maxx>d)
printf("%d\n",sum-maxx+d);
else printf("%d\n",sum); }
} return ;
}
NEUACM1132: Renew MST Quickly 增量最小生成树的更多相关文章
- poj 1679 The Unique MST(唯一的最小生成树)
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- Codeforces 1108F MST Unification(最小生成树性质)
题目链接:MST Unification 题意:给定一张连通的无向带权图.存在给边权加一的操作,求最少操作数,使得最小生成树唯一. 题解:最小生成树在算法导论中有这个性质: 把一个连通无向图的生成树边 ...
- POJ 1679 The Unique MST 【判断最小生成树是否唯一】
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Defini ...
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...
- CF F. MST Unification (最小生成树避圈法)
题意 给一个无向加权联通图,没有重边和环.在这个图中可能存在多个最小生成树(MST),你可以进行以下操作:选择某条边使其权值加一,使得MST权值不变且唯一.求最少的操作次数. 分系:首先我们先要知道为 ...
- POJ1679 The Unique MST(Kruskal)(最小生成树的唯一性)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27141 Accepted: 9712 D ...
- AT3611 Tree MST 点分治+最小生成树
正解:点分治+最小生成树 解题报告: 传送门! 然后这题麻油翻译,,,所以这边的建议是先说下题意呢亲 所以题意大概就是说,给一棵n个节点的树,树上每个点都有个权值,然后构造一个完全图,(u,v)之间连 ...
- (F. MST Unification)最小生成树
题目链接:http://codeforces.com/contest/1108/problem/F 题目大意:给你n个点和m条边,然后让你进行一些操作使得这个图的最小生成树唯一,每次的操作是给某一条边 ...
- The Unique MST POJ - 1679 最小生成树判重
题意:求一个无向图的最小生成树,如果有多个最优解,输出"Not Unique!" 题解: 考虑kruskal碰到权值相同的边: 假设点3通过边(1,3)连入当前所维护的并查集s. ...
随机推荐
- 3.Exadata 软件体系结构
整体架构和 smart scan Aasm Ehcc (混合例压缩 和 存储索引) SCAN Service 和 server pool DB SERVER -> DB instance -&g ...
- cotex_A7/A9:
A7与A9的比较:A7计算性能(DMIPS)不如A9(编号越大计算能力越强),但A7功耗更先进,作为A15的协处理器.A8是单核.
- ClouderManger搭建大数据集群时ERROR 2003 (HY000): Can't connect to MySQL server on 'ubuntucmbigdata1' (111)的问题解决(图文详解)
问题详情 相关问题的场景,是在我下面的这篇博客里 Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubun ...
- 【Ubuntu】Vritual Box 复制方式克隆
重装系统后之前安装的虚拟机的镜像全都不见了 ,因为重装系统盘C盘会全部重新被格式化. VtritualBox如果没有指定虚拟机存放位置,默认是会放在C盘的,C:\Users\Administrator ...
- 移动端H5页面注意事项
1. 单个页面内容不能过多 设计常用尺寸:7501334 / 6401134,包含了手机顶部信号栏的高度. 移动端H5活动页面常常需要能够分享到各种社交App中,常用的有微信.QQ等. 使用移动设备查 ...
- small zhishi
\\192.168.1.201\d$\Data 访问远程计算机文件资源管理器
- mvc 页面简单get获取后台数据
后台方法 public ActionResult Linq() { var lt = UserSys.FindAll(); Hashtable ht = new Hashtable(); ht.Add ...
- 在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)
集成第三方so和jar包 include $(CLEAR_VARS) #jar包编译 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=securit ...
- html5可拖动的进度条
总结:拖动显示进度的进度条 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- zookeeper入门教程
zookeeper使用场景,不是很难了解,感觉zk监听节点变化,这个功能比较厉害.zk存储的节点组织结构有点像unix文件系统 1.安装zk 运行环境 centos 7 java 8 zookeepe ...