题目描述

约翰农场的牛群希望能够在 N 个(1<=N<=200) 草地之间任意移动。草地的编号由 1到 N。草地之间有树林隔开。牛群希望能够选择草地间的路径,使牛群能够从任一 片草地移动到任一片其它草地。 牛群可在路径上双向通行。

牛群并不能创造路径,但是他们会保有及利用已经发现的野兽所走出来的路径(以 下简称兽径)。每星期他们会选择并管理一些或全部已知的兽径当作通路。

牛群每星期初会发现一条新的兽径。他们接着必须决定管理哪些兽径来组成该周牛 群移动的通路,使得牛群得以从任一草地移动到任一草地。牛群只能使用当周有被 管理的兽径做为通路。

牛群希望他们管理的兽径长度和为最小。牛群可以从所有他们知道的所有兽径中挑 选出一些来管理。牛群可以挑选的兽径与它之前是否曾被管理无关。

兽径决不会是直线,因此连接两片草地之间的不同兽径长度可以不同。 此外虽然 两条兽径或许会相交,但牛群非常的专注,除非交点是在草地内,否则不会在交点 换到另外一条兽径上。

在每周开始的时候,牛群会描述他们新发现的兽径。如果可能的话,请找出可从任 何一草地通达另一草地的一组需管理的兽径,使其兽径长度和最小。

输入输出格式

输入格式:

输入的第一行包含两个用空白分开的整数 N 和 W。W 代表你的程序需要处理 的周数. (1 <= W <= 6000)。

以下每处理一周,读入一行数据,代表该周新发现的兽径,由三个以空白分开 的整数分别代表该兽径的两个端点 (两片草地的编号) 与该兽径的长度(1…10000)。一条兽径的两个端点一定不同。

输出格式:

每次读入新发现的兽径后,你的程序必须立刻输出一组兽径的长度和,此组兽径可从任何一草地通达另一草地,并使兽径长度和最小。如果不能找到一组可从任一草地通达另一草地的兽径,则输出 “-1”。

输入输出样例

输入样例#1:

4 6
1 2 10
1 3 8
3 2 3
1 4 3
1 3 6
2 1 2

输出样例#1:

-1 //No trail connects 4 to the rest of the fields.
-1 //No trail connects 4 to the rest of the fields.
-1 //No trail connects 4 to the rest of the fields.
14 //Maintain 1 4 3, 1 3 8, and 3 2 3.
12 //Maintain 1 4 3, 1 3 6, and 3 2 3.
8 //Maintain 1 4 3, 2 1 2, and 3 2 3.
//program exit  

最小生成树+插入排序所谓插入排序

点击进入插入排序学习网站屠龙宝刀点击就送
#include <algorithm>
#include <cstdio>#define Max 200
#define syl main
using namespace std;struct node
{int x,y,z;
}edge[Max*Max*7];
int cnt,i,j,fa[Max*7],n,w;
void add(int u,int v,int l)
{node*now=&edge[++cnt];now->x=u;now->y=v;now->z=l;
}
bool cmp(node a,node b)
{return a.z<b.z;
}
int find_fa(int k)
{return fa[k]==k?k:fa[k]=find_fa(fa[k]);
}
int kruskal()
{for(int i=1;i<=n;++i) fa[i]=i;int ans=0,k=0;for(int i=1;i<=cnt;++i){int fx=find_fa(edge[i].x),fy=find_fa(edge[i].y);if(fx!=fy){k++;fa[fy]=fx;ans+=edge[i].z;if(k==n-1) return ans;}}return -1;
}
void qr(int &x)
{x=0;bool f=0;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+(int)ch-48;ch=getchar();}x=f?(~x)+1:x;
}
void InsertSort(int size)
{int i,j,key,fr,t;for(i=1;i<size;++i){key=edge[i].z;fr=edge[i].x;t=edge[i].y;for(j=i-1;j>=1;--j){if(edge[j].z>key) {edge[j+1].z=edge[j].z;edge[j+1].x=edge[j].x;edge[j+1].y=edge[j].y;}else break;}edge[j+1].z=key;edge[j+1].x=fr;edge[j+1].y=t;}
}
int syl()
{qr(n);qr(w);for(int x,y,z;w--;){qr(x);qr(y);qr(z);add(x,y,z);InsertSort(cnt+1);printf("%d\n",kruskal());}return 0;
}

转载于:https://www.cnblogs.com/ruojisun/p/6575097.html

洛谷 P1340 兽径管理相关推荐

  1. 洛谷P2146DTOJ2409 [NOI2015]软件包管理器

    洛谷P2146&&DTOJ2409 [NOI2015]软件包管理器 题目 题目描述 输入格式 输出格式 样例 样例输入1 样例输出1 样例输入2 样例输出2 数据范围与提示 样例1说明 ...

  2. 洛谷 P2920 [USACO08NOV]时间管理Time Management

    时间管理Time Management 二分枚举开始时间. #include <iostream> #include <cstdio> #include <algorit ...

  3. BZOJ1620洛谷P2920 [USACO08NOV]时间管理Time Management

    emm贪心题,但不知道怎么让我搞成了并查集 先将数组按结束时间排序,因为肯定先安排靠后的工作,后面处理时冲突会减小很多 然后如何并查集乱搞呢? 假如下图是一个没有加入任务的时间线{{20,5},{15 ...

  4. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  5. 洛谷P5266 【深基17.例6】学籍管理

    此题为洛谷官方比赛题,鄙人AK.... 你可以选择用map扫描,或者stack队列,但我认为那些太高大上了,所以写了一个struct(结构体,给新手看的 ) 话不多说,直接上AC代码,Ctrl+C去吧 ...

  6. Java 洛谷 P1089 津津的储蓄计划讲解

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...

  7. 模拟退火总结+洛谷模板题(P1337 [JSOI2004]平衡点 / 吊打XXX)

    原来就听说过模拟退火,然后一直觉得神奇,但是没有真正的去实现这个算法. 模拟退火对TSP之类的问题很实用. 1.概念:模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一 ...

  8. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)

    LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...

  9. 【暖*墟】#洛谷网课1.30# 树上问题

    树上倍增 基环外向树DP DFS序与欧拉序 树链剖分 可以参考wjyyy的https://www.wjyyy.top/421.html wjyyy是这样说的: 树链剖分是一种优化,将树上最常经过的几条 ...

最新文章

  1. Android 打包混肴
  2. Linux 磁盘I/O读写速度检测
  3. 如何修改linux的MAC地址
  4. linux安装python3教程_linux下安装python3和对应的pip环境教程详解
  5. 【Egret】Wing3发布移动APP功能,打包APK流程以及会遇到的问题
  6. 玩家在RTX 3090显卡中发现了指套
  7. 电子邮件地址验证:详细解释,生产质量WPF文本框代码
  8. Bp神经网络+C++实现
  9. CAD制图初学入门如何提高CAD绘图效率?
  10. 前端学习/ Day1/HTTP简单易懂/GET POST/HTTP特性/HTTP与HTTPS/HTTP版本演变/加解密数字签名数字证书
  11. Android桌面隐藏图标
  12. 查看浏览器保存的密码
  13. mac下如何设置excel下拉表格
  14. 结构光扫描仪(维基百科全翻译版)
  15. 海湾主机汉字注释表打字出_海湾消防主机字根表-海湾消防主机
  16. antv g6对接后台数据_AntV - G6
  17. 杂谈:编程解决水管工游戏
  18. 计算机学报和c类会议,ccf期刊目录_ccf_ccf a类
  19. 西安电子科技大学通院811电院821考研上岸经验分享(一)
  20. MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制

热门文章

  1. excel python插件_利用 Python 插件 xlwings 读写 Excel
  2. python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...
  3. 洛谷P1217 回文质数
  4. 图论-网络流-Dinic (邻接表版)
  5. linux-shell命令之chown(change owner)【更改拥有者】
  6. python logging之multi-module
  7. 特征提取——HOG方向梯直方图
  8. 人类视觉系统_对人类视觉系统的对抗攻击
  9. 如何看待雅虎套现760亿美元从阿里巴巴退出?
  10. IE 10的新HTML​解析规则​