多校HDU5723 最小生成树+dfs回溯
Abandoned country
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 877 Accepted Submission(s): 236
For each test case, the first line contains two integers n,m indicate the number of villages and the number of roads to be re-built. Next m lines, each line have three number i,j,wi, the length of a road connecting the village i and the village j is wi.
4 6
1 2 1
2 3 2
3 4 3
4 1 4
1 3 5
2 4 6
#include <iostream>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define LL long long
#define N 100010
#define M 1000010
vector<pair<int,int> > v[N];//定义一个pair型的主要是因为要在v[].second中储存路径权值
struct node
{
int a,b,w;
} edge[M];//储存每条边
int father[N],vis[N];
int n,m;
long long ans;//记录总权值;
bool cmp(node x,node y){
return x.w<y.w;
}
int finds(int x){
return father[x]==x?x:father[x]=finds(father[x]);
}
long long dfs(int x){//dfs递归搜索
vis[x]=; //标记顶点避免死循环
int i;
long long nb=,cb=;
int h=v[x].size();
for(i=; i<h; i++)
{
int b=v[x][i].first;
if(!vis[b])
{
nb=dfs(b);
cb+=nb;
ans+=nb*(n-nb)*v[x][i].second;
}
}
return +cb;
}
int main()
{
int t,i;
long long sum;
cin>>t;
while(t--)
{
for(i=; i<=N; i++)
v[i].clear();
memset(vis,,sizeof(vis));
ans=;
sum=;
int flag=;
scanf("%d%d",&n,&m);
if(n==||m==)
{
printf("0 0.00\n");
continue;
}
for(i=; i<=n; i++)
{
father[i]=i;
}
for(i=; i<m; i++)
{
scanf("%d%d%d",&edge[i].a,&edge[i].b,&edge[i].w);
}
sort(edge,edge+m,cmp);
for(i=; i<m; i++)
{
int fx=finds(edge[i].a);
int fy=finds(edge[i].b);
if(fx!=fy)
{
flag++;
father[fx]=fy;
sum+=edge[i].w;
v[edge[i].a].push_back(make_pair(edge[i].b,edge[i].w));
v[edge[i].b].push_back(make_pair(edge[i].a,edge[i].w));
}
if(flag==n-)
break;
}
for(i=; i<=n; i++)
{
if(v[i].size()==)
break;
}
long long ko=dfs(i);
double y=1.0*n*(n-)/;
printf("%I64d %.2lf\n",sum,(double)ans/y);
}
return ;
}
多校HDU5723 最小生成树+dfs回溯的更多相关文章
- 素数环(dfs+回溯)
题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...
- NOJ 1074 Hey Judge(DFS回溯)
Problem 1074: Hey Judge Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit interger IO format: ...
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU1016 Prime Ring Problem(DFS回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- uva 193 Graph Coloring(图染色 dfs回溯)
Description You are to write a program that tries to find an optimal coloring for a given graph. Col ...
- P1074 靶形数独 dfs回溯法
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...
- 剪格子---(dfs回溯)
如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以 ...
- 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
算法提高 8皇后·改 时间限制:1.0s 内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ...
随机推荐
- Laravel中创建控制器
<?php /** * Created by PhpStorm. * User: chuang * Date: 17-1-14 * Time: 下午4:29 */ namespace App\H ...
- nyoj677 谍战
本题能够说是最小割入门级题目. 假设能想到是最小割问题.那么建图思路便是水到渠成的事了. 加入一个源点S和汇点T: 把S与每一个间谍相连.容量为无穷大: 把城市N(即飞机场的位置)与汇点T相连.容量为 ...
- TP表单验证
[表单验证] javascript jquery 在服务器端通过tp框架实现表单验证 用户名.密码.重复密码.邮箱.qq.手机号码.爱好.学历 具体步骤: 制作表单 表单form数据通过create( ...
- #1560 : H国的身份证号码II(dp+矩阵快速幂)
#1560 : H国的身份证号码II 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整 ...
- python系列一:python3基础语法
'''python保留字即关键字,我们不能把它们用作任何标识符名称.Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字: '''>>> import ...
- 根据字段表 自动创建 表SQL
create PROC CreateTableSql ) AS ) ,) ,) ) ,) ,) ,@IsIdentity bit ,@IsNull bit ,@IsPrimaryKey bit ),) ...
- 常用代码块:java使用剪贴板复制文本
// 获得系统剪切板 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 复制到剪切板上 String ...
- app开发学习需要经历哪些流程
app开发学习需要经历哪些流程?如何零基础入门app开发?以下是知乎热心开发者的经验总结,对学习app开发有很好的参考意义 1.如果没有编程基础的,学习基础知识的过程肯定是必须的.2.有了一些基础 ...
- c# 获取网页源代码(支持cookie),最简单代码
/// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...
- 爬虫四 selenium模块
一.介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...