P1547 Out of Hay
传送门 练习
只是一个最小生成树的水题,拿来练练模板
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 10001
struct hh
{
int x,y,z;
}t[maxn];
int n,m,fa[maxn],ans=,bj,jl[maxn],top=;
bool cmp(const hh&x,const hh&y)
{
return x.z<y.z;
}
inline int find(int u)
{
if(fa[u]==u) return u;
fa[u]=find(fa[u]);
return u=fa[u];
}
inline void kruskal()
{
int f1,f2,k,i;
k=;
for(i=;i<=n;i++) fa[i]=i;//初始化
for(i=;i<=m;i++)
{
f1=find(t[i].x);
f2=find(t[i].y);
if(f1!=f2)
{
ans=ans+t[i].z;
jl[++top]=t[i].z;
fa[f1]=f2;
k++;
if(k==n-) break;
}
}
}
int main()
{
cin>>n>>m;
ans=;bj=;
for(int i=;i<=m;i++)
{
cin>>t[i].x>>t[i].y>>t[i].z;
}
sort(t+,t+m+,cmp);
kruskal();
sort(jl+,jl+top);
cout<<jl[top]<<endl;
return ;
}
再附上最小生成树纯模板:
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct edge{int x,y,z;}a[maxn];//定义数组(好用的结构体)
int n,m,fa[maxn],ans=,bj;
bool cmp(const edge&x,const edge&y)//重定义sort函数(背模板吧。。)
{
return x.z<y.z;
}
int find(int u)//查找祖先
{
if(fa[u]==u) return fa[u];
fa[u]=find(fa[u]);
return fa[u];
}
void kruskal()//kruskal的核心程序
{
int f1,f2,k,i;
k=;
for(i=;i<=n;i++) fa[i]=i;
for(i=;i<=m;i++)
{
f1=find(a[i].x);
f2=find(a[i].y);//并查集基本操作
if(f1!=f2)//两点之间没有边(有边就不管)
{
ans=ans+a[i].z;
fa[f1]=f2;
k++;//搭边并记录
if(k==n-) break;//图刚好为最小生成树,退出
}
}
if(k<n-){cout<<"orz"<<endl;bj=;return;}//边数达不到最小生成树要求
}
int main()
{
cin>>n>>m;//输入点数,边数
ans=;bj=;//ans记录总的边权长,bj判断能否组成最小生成树
for(int i=;i<=m;i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;//输入点1,点2,并赋上权值
}
sort(a+,a+m+,cmp);//从小到大排序
kruskal();//建树
if(bj) cout<<ans<<endl;//有最小生成树就输出ans
return ;
}
P1547 Out of Hay的更多相关文章
- 洛谷——P1547 Out of Hay
P1547 Out of Hay 题目背景 奶牛爱干草 题目描述 Bessie 计划调查N (2 <= N <= 2,000)个农场的干草情况,它从1号农场出发.农场之间总共有M (1 & ...
- 洛谷P1547 Out of Hay
题目背景 奶牛爱干草 题目描述 Bessie 计划调查N (2 <= N <= 2,000)个农场的干草情况,它从1号农场出发.农场之间总共有M (1 <= M <= 10,0 ...
- 洛谷 P1547 Out of Hay (最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1547 思路: 嗯...既然题中已经说了是最小生成树,那么是需要在最小生成树的模板上稍作修改即可.要 ...
- P1547 Out of Hay 洛谷
https://www.luogu.org/problem/show?pid=1547 题目背景 奶牛爱干草 题目描述 Bessie 计划调查N (2 <= N <= 2,000)个农场的 ...
- [总结]最小生成树之Kruskal算法
目录 一.最小生成树的相关知识 1. 树的性质 2. 生成树 3. 最小生成树 4. 最小生成树的性质 二.Kruskal算法求最小生成树 1. 核心思想 2. 具体流程 3. 图示 4. 代码实施 ...
- 瓶颈生成树与最小生成树 POJ 2395 Out of Hay
百度百科:瓶颈生成树 瓶颈生成树 :无向图G的一颗瓶颈生成树是这样的一颗生成树,它最大的边权值在G的所有生成树中是最小的.瓶颈生成树的值为T中最大权值边的权. 无向图的最小生成树一定是瓶颈生成树,但瓶 ...
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
题目描述 Farmer John suffered a terrible loss when giant Australian cockroaches ate the entirety of his ...
- [BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草
[BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草 试题描述 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草. 他知道N(1≤N≤100)个干草 ...
- Out of Hay
Out of Hay Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13094 Accepted: 5078 Descripti ...
随机推荐
- node 按行读取文件
var readline = require('readline'); var fs = require('fs'); var os = require('os'); var fReadName = ...
- easyui form提交和formdata提交记录
1 easyui form提交 $('form').form('submit',{ url:''; onSubmit:''; success:function(data){ //这种方法获取到的da ...
- 深入理解HashMap+ConcurrentHashMap的扩容策略
前言 理解HashMap和ConcurrentHashMap的重点在于: (1)理解HashMap的数据结构的设计和实现思路 (2)在(1)的基础上,理解ConcurrentHashMap的并发安全的 ...
- tomcat 启动时遇到org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs
当发生这样的错误的时候 org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet ...
- 每日linux命令学习-xargs命令
xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据 ...
- curl 异步捉取数据类
<?php class RequestLib { /** * GET 请求 * @param string $url */ public static function http_get($ur ...
- Golang闭包入门了解
概念闭包就是一个函数与其相关的引用环境组成的一个整体.闭包本质其实是一个函数,但是这个函数会用到函数外的变量,它们共同组成的整体我们叫做闭包. 简单举例说明 package main import ( ...
- Jenkins实现SVN+Maven+Java项目的持续集成
Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...
- [内核驱动] VS2012+WDK 8.0 Minifilter实现指定扩展名文件拒绝访问
转载:http://blog.csdn.net/C0ldstudy/article/details/51585708 转载:http://blog.csdn.net/zj510/article/det ...
- 数据库 --- 4 多表查询 ,Navicat工具 , pymysql模块
一.多表查询 1.笛卡儿积 查询 2.连接 语法: ①inner 显示可构成连接的数据 mysql> select employee.id,employee.name,department ...