BNUOJ-26586 Simon the Spider 最小生成树+枚举
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26586
题意:给一个图,每条边有一个权值。要你求选择一棵树,权值和为sum,然后在树上选择一条边权值为w,然后使得sum-2*w最小。
首先求一遍最小生成树,然后求出每两个点之间的最小瓶颈路,然后枚举边就行了。。
//STATUS:C++_AC_916MS_30048KB
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
typedef long long LL; const int N=; struct Edge{
int u,v,w;
}e[],et[];
int first[N],next[];
int p[N],vis[N],d[N][N];
bool mst[];
int n,m,mt; void adde(int a,int b,int c)
{
et[mt].u=a,et[mt].v=b,et[mt].w=c;
next[mt]=first[a];first[a]=mt++;
et[mt].u=b,et[mt].v=a,et[mt].w=c;
next[mt]=first[b];first[b]=mt++;
} int cmp(const Edge& a,const Edge& b)
{
return a.w<b.w;
} int find(int x){return p[x]==x?x:p[x]=find(p[x]);} int Kruskal()
{
int i,j,x,y,sum=,cnt=;
for(i=;i<=n;i++)p[i]=i;
sort(e,e+m,cmp);
mem(mst,);
for(i=;i<m;i++){
x=find(e[i].u);
y=find(e[i].v);
if(x!=y){
cnt++;
sum+=e[i].w;
p[y]=x;
mst[i]=true;
}
}
if(cnt<n-)return -;
return sum;
} int dfs(int& s,int u,int fa,int hig)
{
int i,v;
for(i=first[u];i!=-;i=next[i]){
v=et[i].v;
if(v==fa)continue;
d[s][v]=max(hig,et[i].w);
dfs(s,v,u,d[s][v]);
}
return ;
} int main(){
// freopen("in.txt","r",stdin);
int i,j;
while(~scanf("%d%d",&n,&m))
{
for(i=;i<m;i++){
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
} int sum;
if((sum=Kruskal())==-){
printf("disconnected\n");
continue;
}
mem(first,-);mt=;
for(i=;i<m;i++){
if(mst[i]){
adde(e[i].u,e[i].v,e[i].w);
}
}
mem(d,);
for(i=;i<=n;i++){
dfs(i,i,-,);
}
int ans=0x7FFFFFFF;
for(i=;i<m;i++){
ans=min(ans,sum-d[e[i].u][e[i].v]-e[i].w);
} printf("%d\n",ans);
}
return ;
}
BNUOJ-26586 Simon the Spider 最小生成树+枚举的更多相关文章
- HDU 1589 Find The Most Comfortable Road 最小生成树+枚举
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- HDU4081 Qin Shi Huang's National Road System【prim最小生成树+枚举】
先求出最小生成树,然后枚举树上的边,对于每条边"分别"找出这条割边形成的两个块中点权最大的两个 1.因为结果是A/B.A的变化会引起B的变化,两个制约.无法直接贪心出最大的A/B. ...
- csu1116 Kingdoms 最小生成树-枚举状态
题目链接: csu 1116 题意: 有一幅双向图连接N个城市(标号1~n,1表示首都) 每一个城市有一个价值W. 地震摧毁了全部道路,现给出可修复的m条道路并给出修复每条道路所需的费用 问在总费用 ...
- CSU 1541 There is No Alternative (最小生成树+枚举)
题目链接:传送门 题意: 有n个点.m条边.要使n个点所有连起来且要花费最小.问有哪些边是必需要连的. 分析: 要使花费最小肯定是做最小生成树.可是题目要求哪些边是必需要用的.我们能够 这样思考,我们 ...
- 2017北京国庆刷题Day6 afternoon
期望得分:100+100+40=240 实际得分:100+0+40=140 二进制拆分.二进制前缀和 #include<cstdio> #include<iostream> u ...
- Codeforces Round #535(div 3) 简要题解
Problem A. Two distinct points [题解] 显然 , 当l1不等于r2时 , (l1 , r2)是一组解 否则 , (l1 , l2)是一组合法的解 时间复杂度 : O(1 ...
- UVA-10600(次小生成树)
题意: 现在给一个图,问最小生成树和次小生成树的权值和是多少; 思路: 求最小生成树的两种方法,次小生成树是交换最小生成树的其中一条边得到的,现在得到了最小生成树,枚举不在次小生成树中的边,再求一边最 ...
- 【POJ 1679】 The Unique MST
[题目链接] 点击打开链接 [算法] 先求出图的最小生成树 枚举不在最小生成树上的边,若加入这条边,则形成了一个环,如果在环上且在最小生成树上的权值最大的边等于 这条边的权值,那么,显然最小生成树不唯 ...
- 国庆 day 6 下午
1.数组异或 (xorarray.pas/c/cpp) (xorarray.in/out) 时间限制:2s/空间限制:256M [题目描述] xor——异或,和 and 与or 一样,是一种重要的逻辑 ...
随机推荐
- A JSTL primer, Part 2: Getting down to the core
In the initial article of this series, you got your first look at JSTL. We described the use of its ...
- IText 生成简单表格(报表)doc文档 单元居中
IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.jar,iText-2.1.4.jar 亲测无误,代码如下所示: import com.lowagie ...
- ABC: Always Be Coding——程序员面试必
本文作者@guitardave24 ">David Byttow 是一名程序员,曾在 Google 和 Square 等公司工作过. 在正文之前,先让我们回答几个简单的问题:第一,你面 ...
- Android开发之ContentValues
SQLite数据库进行CRUD的时候, 用到了ContentValues类,负责存储名值对,名都是String类型,值都是基本类型. 例子: ContentValues values=new Cont ...
- 1306.Sequence Median(堆排序)
1306 URAL真是没水题 以为简单的排序就好了 ME 内存限制很紧 堆排序 或者 STL 用堆排序做的 正好复习一下 都忘了 #include <iostream> #include ...
- volicety常用方法
1.volicety得到某个元素的个数 $extendsInfos.size() 2.volicety 布尔值判断: 如果a为null,#if($a) ,产生的判断值是false 等同于#if(fa ...
- poj3月题解
poj2110 二分答案+bfs判定 poj2112 二分答案+最大流判定(二分答案真乃USACO亲儿子) poj1986 裸的LCA,值得注意的是,树中任意两点的距离可以等于这两点到根的距离减去2* ...
- tyvj1161聚会的名单(trie树)
背景 Background 明天就是candy的生日,candy又会邀请自己的一大堆好友来聚会了!哎!又要累坏飘飘乎居士了!! 描述 Description 明天就是candy的生日.晚上,c ...
- jquery图片轮播-插件
更新内容: 1. 页面结构和css样式必定类似下边放置 2. 点击左右按钮,实现左右滑动. 3. 这一般用于多个图片轮播使用,简化并优化代码. 若因不同需求,均可自行将插件scrollimgplus. ...
- 55人班37人进清华北大的金牌教师之32条教育建言! z
他带的一个55人的班,37人考进清华.北大,10人进入剑桥大学.耶鲁大学.牛津大学等世界名校并获全额奖学金,其他考入复旦.南开等大学.不仅 如此,校足球冠军.校运动会总冠军.校网页设计大赛总冠军等6项 ...