uva 10600 ACM Contest And Blackout
题意:
求最小生成树和次小生成树的总权值。
思路:
第一种做法,适用于规模较小的时候,prim算法进行的时候维护在树中两点之间路径中边的最大值,复杂度O(n^2),枚举边O(m),总复杂度O(n^2);
第二种做法,倍增求lca,预处理复杂度O(nlog(n)),替换的时候log(n),总复杂度为O(mlog(n))。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; const int maxn = ;
const int inf = 0x3f3f3f3f; int mp[maxn][maxn];
bool vis[maxn];
bool used[maxn][maxn];
int d[maxn];
int path[maxn][maxn];
int pre[maxn]; int prim(int n)
{
memset(path,,sizeof(path));
memset(vis,,sizeof(vis));
memset(used,,sizeof(used)); vis[] = ;
d[] = ; int ans = ; for (int i = ;i <= n;i++)
{
pre[i] = ;
d[i]= mp[][i];
} for (int i = ;i < n - ;i++)
{
int x = -,dis = inf; for (int j = ;j <= n;j++)
{
if (!vis[j] && d[j] < dis)
{
dis = d[j];
x = j;
}
} vis[x] = ;
used[x][pre[x]] = used[pre[x]][x] = ; ans += dis; for (int j = ;j <= n;j++)
{
if (vis[j] && j != x) path[j][x] = path[x][j] = max(dis,path[j][pre[x]]); if (!vis[j] && mp[x][j] < d[j])
{
d[j] = mp[x][j];
pre[j] = x;
}
}
} return ans;
} int main()
{
int t; scanf("%d",&t); while (t--)
{
int n,m; scanf("%d%d",&n,&m); memset(mp,inf,sizeof(mp)); for (int i = ;i < m;i++)
{
int a,b,c; scanf("%d%d%d",&a,&b,&c); mp[a][b] = mp[b][a] = min(mp[a][b],c);
} int ans1 = prim(n); int ans2 = inf; for (int i = ;i <= n;i++)
{
for (int j = i + ;j <= n;j++)
{
if (used[i][j]) continue; ans2 = min(ans2,ans1 - path[i][j] + mp[i][j]);
}
} printf("%d %d\n",ans1,ans2);
} return ;
}
uva 10600 ACM Contest And Blackout的更多相关文章
- UVA 10600 ACM Contest and Blackout 次小生成树
又是求次小生成树,就是求出最小生成树,然后枚举不在最小生成树上的每条边,求出包含着条边的最小生成树,然后取一个最小的 #include <iostream> #include <al ...
- [ An Ac a Day ^_^ ] [kuangbin带你飞]专题八 生成树 UVA 10600 ACM Contest and Blackout 最小生成树+次小生成树
题意就是求最小生成树和次小生成树 #include<cstdio> #include<iostream> #include<algorithm> #include& ...
- UVA10600:ACM Contest and Blackout(次小生成树)
ACM Contest and Blackout 题目链接:https://vjudge.net/problem/UVA-10600 Description: In order to prepare ...
- 【UVA 10600】 ACM Contest and Blackout(最小生成树和次小生成树)
[题意] n个点,m条边,求最小生成树的值和次小生成树的值. InputThe Input starts with the number of test cases, T (1 < T < ...
- 【uva 10600】ACM Contest and Blackout(图论--次小生成树 模版题)
题意:有T组数据,N个点,M条边,每条边有一定的花费.问最小生成树和次小生成树的权值. 解法:具体请见 关于生成树的拓展 {附[转]最小瓶颈路与次小生成树}(图论--生成树) 1 #include&l ...
- UVA10600 ACM Contest and Blackout —— 次小生成树
题目链接:https://vjudge.net/problem/UVA-10600 In order to prepare the “The First National ACM School Con ...
- UVA-10600 ACM Contest and Blackout (次小生成树)
题目大意:给一张无向图,找出最小生成树和次小生成树. 题目分析:模板题...方法就是枚举所有的比最小生成树中两端点之间的最长边还要长的边,用它替换,再取一个最小的值便是次小生成树了. 代码如下: # ...
- UVA10600 ACM Contest and Blackout
用prim算法求最小生成树和次小生成树~ #include<cstdio> #include<algorithm> #include<cstring> using ...
- SDUT 2409:The Best Seat in ACM Contest
The Best Seat in ACM Contest Time Limit: 1000MS Memory limit: 65536K 题目描述 Cainiao is a university st ...
随机推荐
- css样式重置样式
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, ci ...
- Python中Mock的示例(转)
原文:https://segmentfault.com/a/1190000008753754 一些常用的mock示例 先简单定义个类,方便举例: class Person: def __init__( ...
- Asp.net Mvc Ajax.BeginForm提交表单
之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...
- $(document).ready()方法和window.onload有什么区别?
①.window.onload 方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的: ②.$(document).ready()方法可以在DOM载入就绪时就对其进行操纵,并调 ...
- runtime实现weak属性
我们可以自己创建一个 A 类,然后在“宿主对象”和“值对象”建立 weak 关系的时候,偷偷地创建一个 A 类的实例 a,绑定在 “值对象” 上. 当“值对象”销毁后,这个 a 也会被销毁.而 A 类 ...
- 张小龙2018PRO版微信公开课演讲全文 透露2018微信全新计划
大家好!我是张小龙.欢迎大家来到微信公开课. 刚刚出现的是我打游戏的画面,被大家看到了,那个不是我最好的水平,因为有点紧张,我最高分曾打到6000多分.当然我是练习了很久了,并不是我比大家更厉害,而是 ...
- MySQL 8.0.11 报错[ERROR] [MY-011087] Different lower_case_table_names settings for server ('1')
--报错信息: 2018-06-07T19:52:26.943083+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld ...
- 并发编程---IO模型
IO模型 任务的提交方式有两种: 同步:应用程序提交完任务,等待结果结果,之后在执行下一个任务 异步:应用程序提交完任务,继续执行不等待结果,任务执行完,会自动出发异步中的会带哦函数 同步不等于阻塞: ...
- (转)github设置添加SSH
很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地.然而,为什么绝大多数人会使用https url克隆呢? 这是因为,使用 ...
- [django]drf知识点梳理-权限
用户 - 权限 - 资源 (拥有) (绑定) django权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活:用好权限机制,能让系统更加强大和健壮 django权限控制 Djan ...