洛谷 P1546 最短网络 Agri-Net x
题目背景
农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。
题目描述
约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。
你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000
输入输出格式
输入格式:
第一行: 农场的个数,N(3<=N<=100)。
第二行..结尾: 后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。当然,对角线将会是0,因为不会有线路从第i个农场到它本身。
输出格式:
只有一个输出,其中包含连接到每个农场的光纤的最小长度。
输入输出样例
4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
28
说明
题目翻译来自NOCOW。
USACO Training Section 3.1
1)60代码……
错误原因是?……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define Maxn 100001 using namespace std; int n,c=,f1,f2,tot=,k=;
int f[]; struct point{
int x,y,w;
bool operator < (const point &qwq)const
{
return w<qwq.w;
}//重载运算符(多么高大上的东西!但我还是不太明白怎么使用)
}p[Maxn]; int find(int x)
{
if(f[x]!=x) f[x]=find(f[x]);
return f[x];
//return x == f[x] ? x : f[x]=find(f[x]);
} int main()
{
int v;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
scanf("%d",&v);
if(v!=)
{
c++;
p[c].x=i;
p[c].y=j;
p[c].w=v;
}
}
}
for(int i=;i<=c;i++) f[i]=i;
sort(p+,p+c+);//快排
for(int i=;i<=c;i++)
{
f1=find(p[i].x);
f2=find(p[i].y);
if(f1!=f2)
{
f[f1]=f2;
tot+=p[i].w;
k++;
}
if(k==n-) break;
}
printf("%d",tot);
return ;
}
2)AC代码~我重新写了!
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm> using namespace std; int n,Mst;
int f[]; struct hh
{
int a,b,c;
bool operator < (const hh &ww)const
{
return c < ww.c;
}
}d[]; int find(int l)
{
return l == f[l] ? l : find(f[l]);
} int main()
{
cin>>n;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
cin>>d[(i-)*n+j].c;//进行“超边处理”,使d能够“连接”起来
d[(i-)*n+j].a=i;
d[(i-)*n+j].b=j;
}
sort(d+,d+n*n+);//快排
for(int i=;i<=n;i++)
f[i]=i;
int xx=,i=;
while(xx<n-)
{
i++;
int r1=find(d[i].a);
int r2=find(d[i].b);
if(r1!=r2)
{
f[r1]=r2;
xx++;
Mst+=d[i].c;
}
}
cout<<Mst;
}
洛谷 P1546 最短网络 Agri-Net x的更多相关文章
- 洛谷 P1546 最短网络 Agri-Net
题目链接 https://www.luogu.org/problemnew/show/P1546 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当 ...
- 洛谷P1546 最短网络 Agri-Net(最小生成树,Kruskal)
洛谷P1546 最短网络 Agri-Net 最小生成树模板题. 直接使用 Kruskal 求解. 复杂度为 \(O(E\log E)\) . #include<stdio.h> #incl ...
- 洛谷P1546 最短网络 Agri-Net
P1546 最短网络 Agri-Net 526通过 959提交 题目提供者JOHNKRAM 标签图论贪心USACO 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 50分C++代码,求解 请指 ...
- 洛谷——P1546 最短网络 Agri-Net
P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一 ...
- 洛谷 P1546 最短网络 Agri-Net Label:Water最小生成树
题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...
- 洛谷 P1546 最短网络 Agri-Net(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1546 首先不难看出这道题的思想是用了最小生成树,但是这道题有难点: 1.读题读不明白 2.不会读入 ...
- 洛谷 P1546 最短网络 Agri-Net(最小生成树)
题目链接 https://www.luogu.org/problemnew/show/P1546 说过了不复制内容了 显然是个最小生成树. 解题思路 prim算法 Kruskal算法 prim算法很直 ...
- 洛谷P1546 最短网络 Agri-Net(Prim堆优化)
#include<bits/stdc++.h> using namespace std; ; const int INF=0x3f3f3f3f; inline void read(int ...
- 洛谷1546 最短网络Agri-Net【最小生成树】【prim】
[内含最小生成树Prim模板] 题目:https://www.luogu.org/problemnew/show/P1546 题意:给定一个邻接矩阵.求最小生成树. 思路:点少边多用Prim. Pri ...
随机推荐
- TP5使用phpoffice phpexcel包操作excel(导出)
安装composer(window版本) 安装composer(MAC版本) 安装composer(Linux版本) 在PhpStorm配置 导出excel 1.使用composer安装phpoffi ...
- spark教程(11)-sparkSQL 数据抽象
数据抽象 sparkSQL 的数据抽象是 DataFrame,df 相当于表格,它的每一行是一条信息,形成了一个 Row Row 它是 sparkSQL 的一个抽象,用于表示一行数据,从表现形式上看, ...
- spark教程(六)-Python 编程与 spark-submit 命令
hadoop 是 java 开发的,原生支持 java:spark 是 scala 开发的,原生支持 scala: spark 还支持 java.python.R,本文只介绍 python spark ...
- SqlSugar
SqlSugar 官网 SqlSugar 源码 SqlSugar NuGet
- JS基础_数据类型-Null类型和Undefined类型
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Qt表格导出图片
概述:qt中把某个控件导出保存为图片导出并不复杂,网上也有一堆方法.但是对于tableview中数据很多的情况下势必会出现滚动条,用传统的截屏抓图势会有滚动条,图片数据展示不全.在这我使用了一种折中方 ...
- 微信小程序wx.showActionSheet调用客服信息功能
微信小程序wx.showActionSheet调用客服消息功能 官方文档的代码: wx.showActionSheet({ itemList: ['A', 'B', 'C'], success (re ...
- web开发规范文档二
头部 header\hd 内容块 content\con\bd text txt title 尾部 footer 导航 nav\menu sub-n ...
- 去掉或修改lightinthebox网址与标题中Wholesale关键词
includes\languages\english.php define('SEO_COMMON_KEYWORDS','Wholesale'); 将里面的Wholesale换成你想显示的词即可.
- WinMain lpCmdLine
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpCmdLine, int){ //命令行参数 TCHAR pCommandLine[2 ...