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. ...
随机推荐
- Xtts v4 xttdriver.pl & xtt.properties
Perl脚本xttdriver.pl选项的描述 下表描述了主要支持脚本xttdriver.pl的可用选项. 级备份.这些备份将写入xtt.properties变量"backupformat ...
- Apache Beam中的函数式编程理念
不多说,直接上干货! Apache Beam中的函数式编程理念 Apache Beam的编程范式借鉴了函数式编程的概念,从工程和实现角度向命令式妥协. 编程的领域里有三大流派:函数式.命令式.逻辑式. ...
- 让C:\Users文件夹放在D盘
新安装win7 在安装Win7的过程中,要求输入用户名及密码的时候,先不如输入任何信息,按“Shift+F10”呼出DOS窗口,输入以下命令: robocopy "C:\Users" ...
- 手指静脉细化算法过程原理解析 以及python实现细化算法
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8672489.html 文中的一些图片以及思想很多都是参考https://www.cnblogs ...
- React.js 小书 Lesson17 - 前端应用状态管理 —— 状态提升
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson17 转载请注明出处,保留原文链接和作者信息. 上一个评论功能的案例中,可能会有些同学会对一个 ...
- Linux getopt()函数 getopt_long()函数---转
http://hi.baidu.com/scoundrelgg/item/d4083f8412eea05d26ebd97f Linux getopt()函数 getopt_long()函数 get_o ...
- 用ping命令简单的测试 延时、抖动、丢包率
在DOS命令状态下输入 :ping 202.105.135.211 -t (连续的对该IP地址执行Ping命令,直到被用户以Ctrl+C中断)就会得到下面的结果:Pinging 202.105.135 ...
- jquery解析xml
更多的项目都是在解析json,今天临时让解析几个xml文件,其实都一样,总结一下吧. 例如我们有这样一个xml文件 <?xml version="1.0" encoding= ...
- artDialog组件应用学习(一)
个人觉得artDialog是一组很不错的对话框组件.写的是artDialog_v6应用. 官方称其兼容性测试通过:IE6~IE11.Chrome.Firefox.Safari.Opera. 官网:ht ...
- Mysql性能调优方法
第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...