Telephone Lines

article/2025/10/8 13:21:05

Description

Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncooperative, so he needs to pay for some of the cables required to connect his farm to the phone system.

There are N (1 ≤ N ≤ 1,000) forlorn telephone poles conveniently numbered 1…N that are scattered around Farmer John’s property; no cables connect any them. A total of P (1 ≤ P ≤ 10,000) pairs of poles can be connected by a cable; the rest are too far apart.

The i-th cable can connect the two distinct poles Ai and Bi, with length Li (1 ≤ Li ≤ 1,000,000) units if used. The input data set never names any {Ai, Bi} pair more than once. Pole 1 is already connected to the phone system, and pole N is at the farm. Poles 1 and N need to be connected by a path of cables; the rest of the poles might be used or might not be used.

As it turns out, the phone company is willing to provide Farmer John with K (0 ≤ K < N) lengths of cable for free. Beyond that he will have to pay a price equal to the length of the longest remaining cable he requires (each pair of poles is connected with a separate cable), or 0 if he does not need any additional cables.

Determine the minimum amount that Farmer John must pay.

翻译:

农夫约翰想在他的农场架设一条电话线。不幸的是,电话公司是不合作的,所以他需要支付一些电缆需要连接他的农场到电话系统。

有N(1≤N≤1000)个废弃的电线杆,方便地编号为1…N,散落在农夫约翰的房子里;没有电缆连接它们。共有P(1≤P≤10000)对电杆可用电缆连接,其余电杆相距太远。

第i根电缆可连接两个不同的极Ai和Bi,长度Li(1≤Li≤1000000)单位。输入数据没有重复的{Ai,Bi}对。1号杆已经连接到电话系统,N号杆在农场。极1和N需要通过电缆路径连接;其余的极可以使用也可以不使用。

事实证明,这家电话公司愿意免费为农民约翰提供K(0≤K<N)条电缆。除此之外,他将不得不支付相当于他所需的剩余最长电缆长度的价格(每对电线杆用单独的电缆连接),或者如果他不需要任何额外的电缆,则支付0。

请计算农夫约翰必须支付的最低金额。

Input
第1行:三个空格分隔的整数:N,P,和K
第2…P+1行:第i+1行包含三个空格分隔的整数:Ai、Bi和Li
Output
一个整数,农民约翰可以支付的最低金额。如果无法将农场连接到电话公司,请打印-1。

Sample Input

5 7 1
1 2 5
3 1 4
2 4 8
3 2 3
5 2 9
3 4 7
4 5 6

Sample Output

4

code<代码>

#include<bits/stdc++.h>
#define inf 0x3f3f3f
using namespace std;
int n,m,k,c[10005],ans[1005];
int head[1005],tot;
int anss=0x3f3f;
struct edge{int to,nxt,w;int b;
}e[20005];
void add(int x,int y,int z){e[++tot].to=y;e[tot].w=z;e[tot].nxt=head[x];head[x]=tot;
}
void dfs(int f,int x,int dep,int mid){if(dep>=ans[x]) return;ans[x]=dep;for(int i=head[x];i;i=e[i].nxt){int y=e[i].to;if(y==f) continue;if(e[i].w<=mid) dfs(x,y,dep,mid);else dfs(x,y,dep+1,mid);}
}
int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);c[i]=z;add(x,y,z);add(y,x,z);}sort(c+1,c+m+1);int l=0,r=m;while(l<r){int mid=c[(l+r)/2];memset(ans,inf,sizeof(ans));dfs(0,1,0,mid);if(ans[n]<=k){anss=mid;r=(l+r)/2;}else l=(l+r)/2+1;}if(anss==0x3f3f) printf("%d",-1);else printf("%d",anss);return 0;
}

在这里插入图片描述

天天看天天赞!

我们明天再见,拜拜。


http://chatgpt.dhexx.cn/article/FjfE14Kl.shtml

相关文章

i tell you 微软各种 操作系统 应用程序 开发工具 下载

I tell you 提供微软系各种操作系统&#xff08;win7、xp、win10&#xff09;、应用程序&#xff08;office、project、visio等&#xff09;、开发人员工具&#xff08;visual C、visual basic、visual studio等&#xff09;、服务器系统、设计人员工具等软件的下载。可以说几乎…

常用的红色的RGB值

每一种颜色都有自己的风格&#xff0c;相信点进这篇文章的你一定喜欢设计&#xff0c;希望能对您有所帮助 请点击此处输入图片描述 请点击此处输入图片描述 请点击此处输入图片描述 请点击此处输入图片描述 请点击此处输入图片描述 转自[叫我楼下小黑]

常用RGB色值表

常用RGB色值表 浅粉红 #FFB6C1 255,182,193 粉红 #FFC0CB 255,192,203 猩红/深红 #DC143C 220,20,60 淡紫红 #FFF0F5 255,240,245 弱紫罗兰红 #DB7093 219,112,147 热情的粉红 #FF69B4 255,105,180 深粉红 #FF1493 255,20,147 中紫罗兰红 #C71585 199,21,133 兰花紫 #DA70D6 21…

渐变色表RGB值

渐变色表RGB值 //色表构建vector<unsigned char> R { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,240, 220, 200, 180, 160, 140, 120, 100, 80, 60, 40, 20, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…

RGB颜色表

常用颜色&#xff1a; 白色&#xff1a;rgb(255,255,255) 黑色&#xff1a;rgb(0,0,0) 红色&#xff1a;rgb(255,0,0) 绿色&#xff1a;rgb(0,255,0) 蓝色&#xff1a;rgb(0,0,255) 青色&#xff1a;rgb(0,255,255) 紫色&#xff1a;rgb(255,0,255) 颜色大全https://tool.osch…

玫瑰花的制作(代码+RGB)

玫瑰花 最近在自己的文件夹中发现了一个小程序,打开之后发现不得了,程序的内容居然是一朵用代码和RGB调色,再利用数学公式制作的玫瑰花,效果十分惊艳。 下面直接上图: 图片貌似贴的有点大了(匿:)) 但是!!!(敲黑板!!!)没错,这就是一朵用代码画出来的玫瑰花!可…

RGB颜色与十六进制颜色码

十六进制颜色码 RGB与十六进制颜色对照图 RGB与十六进制颜色对照表 英文代码形像颜色十六进制&#xff08;HEX&#xff09;格式RGB格式LightPink浅粉色#FFB6C1255,182,193Pink粉红#FFC0CB255,192,203Crimson猩红#DC143C220,20,60LavenderBlush偏红的淡紫色#FFF0F5255,240,245P…

RGB颜色

RGB色彩模式是工业界的一种颜色标准&#xff0c;是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的&#xff0c;RGB即是代表红、绿、蓝三个通道的颜色&#xff0c;这个标准几乎包括了人类视力所能感知的所有颜色&#xff0c;是运用最…

【有利可图网】PS实战教程:PS制作岩石金属镶嵌质感立体文字

本教程主要使用形状工具、 3D工具、材质以及光线设置来制作&#xff0c;完成的效果比较真实&#xff0c;大家可以跟着教程一步一步的来。 大理石/玫瑰金组合是流行的极简主义趋势之一&#xff0c;几乎无处不在&#xff0c;从家居装饰到文具&#xff0c;炊具等。本教程将向您展示…

如何挑选机械键盘?高性价比的机械键盘推荐

本文首发于知乎:如何挑选机械键盘?高性价比的机械键盘推荐 又到了一年一度的618购物节了,想要买一把机械键盘(给自己、送男友、送礼物)的读者看过来啦。 本文将介绍以下内容: 一、如何选择适合自己的机械轴 二、如何选择自己喜欢的键帽? 三、其他的参考因素 四、高性价…

Java中调用方法的几种方式

一般的&#xff0c;在Java语言中&#xff0c;调用方法有三种方式。 第一种&#xff1a;通过对象名.方法名进行调用&#xff0c;这是最普通的也是最常见的一种调用方式。 第二种&#xff1a;通过new关键字调用构造方法&#xff0c;这种是在实例化对象时使用的方式。 第三种&…

JAVA 方法定义及调用

1、方法 方法是实现某个功能的一组语句&#xff0c;通常将常用的功能写成一个方法&#xff08;类中的方法&#xff09;。 方法能实现代码的模块化重用。 方法相当于函数&#xff0c;类似于加工厂。参数原材料&#xff1b;方法体加工&#xff1b;返回值&#xff08;return&am…

Java方法之间的调用

Java方法之间的调用 1. 静态方法1.1 静态方法调用静态方法1.2 静态方法调用非静态方法 2. 非静态方法2.1 非静态方法调用静态方法2.2 非静态方法调用非静态方法 1. 静态方法 1.1 静态方法调用静态方法 package com.wang03.test;public class Test{public static void main(St…

java方法,方法调用机制

方法使用 public class Target1{public static void main(String[] args) {//方法使用Person jia new Person();jia.speak();//调用方法jia.cal01();jia.cal02(5);//给n一个5&#xff1b;jia.cal02(10);int returnRes jia.getSum(1,2);System.out.println("getSum方法返…

Java如何获得调用当前方法的方法名

Thread.currentThread().getStackTrace()[1]是你当前方法执行堆栈 Thread.currentThread().getStackTrace()[2]就是上一级的方法堆栈 以此类推 StackTraceElement[] tempThread.currentThread().getStackTrace(); StackTraceElement a(StackTraceElement)temp[2]; this.logger…

Java方法编写与调用

一、什么是方法 阅读下列程序&#xff1a; 发现&#xff1a; &#xff08;1&#xff09;三段代码都是求x的y次方 &#xff08;2&#xff09;重复编写求x的y次方的代码&#xff0c;这样程序变得很臃肿&#xff0c;可读性也非常差。 为了解决代码重复编写的问题&#xff0c;可以…

Java 的方法调用、对象调用

一般的&#xff0c;在Java语言中&#xff0c;调用方法有三种方式。第一种&#xff1a;通过对象名.方法名进行调用&#xff0c;这是最普通的也是最常见的一种调用方式。第二种&#xff1a;通过new关键字调用构造方法&#xff0c;这种是在实例化对象时使用的方式。第三种&#xf…

Java中的方法定义与调用

1.方法&#xff1a; 将具有独立功能的代码块组织成为一个整体&#xff0c;使其成为具有特殊功能的代码集。 2.方法必须先创建才可以使用&#xff0c;该过程称为方法定义。 方法必须先定义后调用&#xff0c;否则程序会报错。 3.方法创建后并不是直接运行的&#xff0c;需要手动…

JAVA类之间方法的调用

JAVA类方法的调用 一、静态方法调用其他方法&#xff1a;1. 静态方法调用非静态方法2.静态方法调用静态方法 二、非静态方法调用其他方法1.非静态方法在同一类内调用其他方法2.非静态方法在不同类之间调用其他方法 注&#xff1a;调用方法——调用另一方法的方法 被调用方法——…