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 ...
随机推荐
- java中的基本数据类型和引用数据类型
java中基本数据类型有8种:byte,short,int,long,char,float,double,boolean 整型有四种:byte short,int,long byte: 1字节 ...
- 新增async
import asyncio from threading import Thread import time now = lambda: time.time() print('start',now( ...
- close yield
close的方法主要是关闭子生成器,需要注意的有4点: 1.如果生成器close后,还继续next,会报错StopIteration [图片] 2.如果我捕获了异常,将GeneratorE ...
- js增加、删除、替换DOM对象
当网页被加载时,浏览器会创建页面的文档对象模型DOM,即Document Object Model 整个文档为一个文档节点(document对象) 每个html元素为一个元素节点(element对象) ...
- powermockito 常用操作
1:Mock带参数的静态方法 PowerMockito类 package org.powermock.api.mockito; CityCodeBean cityCodeBean = CityCode ...
- 使用v-bind处理class与style
普通的css引入: 变量引入: 通过定义一个变量fontColor来通过v-bind来进行绑定在h3z的class中 <!--变量引入--> <h3 :class="fon ...
- dubbo-启动时检查
dubbo缺醒会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认 check=true 可以通过 check=false 关闭检查,比如 ...
- Angular 父子组件传值
Angular 父子组件传值 @Input @Output @ViewChild 新建一个头部组件 newsheader 在主组件引用 news 组件,在news组件添加 newsheader 组 ...
- php 常用代码片断
参考: https://www.jianshu.com/p/f5303225ef92 http://www.phpxs.com/code/php/
- 移动端(微信等)使用 vConsole 调试 console
参考链接:https://blog.csdn.net/m0_37036014/article/details/80113635