当前位置:网站首页>POJ1287联网题解
POJ1287联网题解
2022-08-01 07:05:00 【bj_hacker】
题目
链接
http://poj.org/problem?id=1287
字面描述
Networking
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 30043 Accepted: 15117
Description
You are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible routes for the cables that may connect pairs of points. For each possible route between two points, you are given the length of the cable that is needed to connect the points over that route. Note that there may exist many possible routes between two given points. It is assumed that the given possible routes connect (directly or indirectly) each two points in the area.
Your task is to design the network for the area, so that there is a connection (direct or indirect) between every two points (i.e., all the points are interconnected, but not necessarily by a direct cable), and that the total length of the used cable is minimal.
Input
The input file consists of a number of data sets. Each data set defines one required network. The first line of the set contains two integers: the first defines the number P of the given points, and the second the number R of given routes between the points. The following R lines define the given routes between the points, each giving three integer numbers: the first two numbers identify the points, and the third gives the length of the route. The numbers are separated with white spaces. A data set giving only one number P=0 denotes the end of the input. The data sets are separated with an empty line.
The maximal number of points is 50. The maximal length of a given route is 100. The number of possible routes is unlimited. The nodes are identified with integers between 1 and P (inclusive). The routes between two points i and j may be given as i j or as j i.
Output
For each data set, print one number on a separate line that gives the total length of the cable used for the entire designed network.
Sample Input
1 0
2 3
1 2 37
2 1 17
1 2 68
3 7
1 2 19
2 3 11
3 1 7
1 3 5
2 3 89
3 1 91
1 2 32
5 7
1 2 5
2 3 7
2 4 8
4 5 11
3 5 10
1 5 6
4 2 12
0
Sample Output
0
17
16
26
Source
Southeastern Europe 2002
代码实现
模板题,思路不展示
#include<cstdio>
#include<string.h>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=100+10;
const int inf=2e9;
int n,ans,m;
int lowcost[maxn];
int c[maxn][maxn];
bool vis[maxn];
inline void Prim(){
//初始化
memset(vis,false,sizeof(vis));
ans=0;
vis[1]=true;
for(int i=1;i<=n;i++)lowcost[i]=c[1][i];
//n-1条边的添加
for(int i=1;i<n;i++){
int temp=inf;
int t=1;
//寻找离已添加最近的节点t
for(int j=1;j<=n;j++){
if(!vis[j]&&lowcost[j]<temp){
temp=lowcost[j];
t=j;
}
}
ans+=temp;
if(t==1)break;
vis[t]=true;
//更新未添加节点
for(int j=1;j<=n;j++){
if(!vis[j]&&c[t][j]<lowcost[j])lowcost[j]=c[t][j];
}
}
}
int main(){
while(1){
scanf("%d",&n);
if(!n)break;
scanf("%d",&m);
memset(c,0x3f,sizeof(c));
for(int i=1;i<=m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
c[u][v]=min(c[u][v],w);
c[v][u]=min(c[v][u],w);
}
Prim();
printf("%d\n",ans);
}
return 0;
}
边栏推荐
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:gtExtras包的pad_fn函数与gt::fmt函数一起用于填充包含数值的特定列、对数据列的数值进行十进制对齐(从小数点对齐)
- 日志导致线程Block的这些坑,你不得不防
- Create, modify and delete tables
- GO错误处理方式
- Introduction to the basic principles, implementation and problem solving of crawler
- Dialogue with the father of MySQL: One excellent programmer is worth 5 ordinary programmers
- rhcsa 第四天
- Data organization -- singly linked list of the linear table
- Vim扩展内容
- ORACLE modify another user package (package)
猜你喜欢
随机推荐
权重等比分配
05-SDRAM: Arbitration
The Bean's life cycle
my creative day
升级为重量级锁,锁重入会导致锁释放?
MVVM项目开发(商品管理系统一)
爬虫基本原理介绍、实现以及问题解决
flinkcdc对mysql的date字段类型转化有什么解决思路么
支付宝如何生成及配置公钥证书
Self-made a remote control software - VeryControl
阿里三面:MQ 消息丢失、重复、积压问题,该如何解决?
R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:gtExtras包的pad_fn函数与gt::fmt函数一起用于填充包含数值的特定列、对数据列的数值进行十进制对齐(从小数点对齐)
Golang:go开启web服务
Dart exception details
日志导致线程Block的这些坑,你不得不防
Practical training Navicat Chinese and English mode switching
Explosive 30,000 words, the hardest core丨Mysql knowledge system, complete collection of commands [recommended collection]
奇葩问题 npm install 报错 gyp ERR
仿牛客网项目总结
R语言使用tidyquant包的tq_transmute函数计算持有某只股票的天、月、周收益率、ggplot2使用条形图可视化股票月收益率数据、使用百分比显示Y轴坐标数据、使用不同的色彩表征正负收益率









