题目链接: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 增量最小生成树的更多相关文章

  1. poj 1679 The Unique MST(唯一的最小生成树)

    http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submis ...

  2. Codeforces 1108F MST Unification(最小生成树性质)

    题目链接:MST Unification 题意:给定一张连通的无向带权图.存在给边权加一的操作,求最少操作数,使得最小生成树唯一. 题解:最小生成树在算法导论中有这个性质: 把一个连通无向图的生成树边 ...

  3. POJ 1679 The Unique MST 【判断最小生成树是否唯一】

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique.  Defini ...

  4. POJ 1679 The Unique MST(判断最小生成树是否唯一)

    题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...

  5. CF F. MST Unification (最小生成树避圈法)

    题意 给一个无向加权联通图,没有重边和环.在这个图中可能存在多个最小生成树(MST),你可以进行以下操作:选择某条边使其权值加一,使得MST权值不变且唯一.求最少的操作次数. 分系:首先我们先要知道为 ...

  6. POJ1679 The Unique MST(Kruskal)(最小生成树的唯一性)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27141   Accepted: 9712 D ...

  7. AT3611 Tree MST 点分治+最小生成树

    正解:点分治+最小生成树 解题报告: 传送门! 然后这题麻油翻译,,,所以这边的建议是先说下题意呢亲 所以题意大概就是说,给一棵n个节点的树,树上每个点都有个权值,然后构造一个完全图,(u,v)之间连 ...

  8. (F. MST Unification)最小生成树

    题目链接:http://codeforces.com/contest/1108/problem/F 题目大意:给你n个点和m条边,然后让你进行一些操作使得这个图的最小生成树唯一,每次的操作是给某一条边 ...

  9. The Unique MST POJ - 1679 最小生成树判重

    题意:求一个无向图的最小生成树,如果有多个最优解,输出"Not Unique!" 题解: 考虑kruskal碰到权值相同的边: 假设点3通过边(1,3)连入当前所维护的并查集s. ...

随机推荐

  1. jsoup: Java HTML Parser

    jsoup  Java HTML Parser jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于j ...

  2. oracle 基础知识(三)--SCN

    一,SCN的介绍     SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...

  3. 枚举类型与字符串ConvertEnumToString

    枚举类型与字符串添加字典互转ConvertEnumToString using UnityEngine; using System.Collections; using UnityEngine.UI; ...

  4. 封装Lua for C#

    http://blog.csdn.net/rcfalcon/article/details/5583095

  5. php获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法

    php 获取今日.昨日.上周.本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime.下面首先还是直奔主题以示例说明如何使用 mktime 获取今日.昨日.上周.本月的起始 ...

  6. Ubuntu通过xinput禁用及启用联想笔记本的触摸板

    查看设备列表 通过xinput先查看一些都有哪些设备 xinput     #或者 xinput list 显示结果如下 ddd@ddd:~$ xinput list   Virtual core p ...

  7. nyoj 1023——还是回文——————【区间dp】

    还是回文 时间限制:2000 ms  |  内存限制:65535 KB 难度:3   描述 判断回文串很简单,把字符串变成回文串也不难.现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一 ...

  8. 获取全球dns统计信息

    # -*- coding:UTF-8 -*- import requests, time import json from bs4 import BeautifulSoup as bp t3 = ti ...

  9. 虚拟机中Linux设置当前ip

    1.查看当前IP,查看网卡信息 ifconfig 2.设置临时IP ifconfig eth0 192.168.1.163 netmask 255.255.255.0 eth0表示第一块网卡 设置完之 ...

  10. jquery监控input输入框的变化

    (function($) { $.fn.watch = function(callback) { return this.each(function() { //缓存以前的值 $.data(this, ...