HYSBZ - 1050(旅行comf 并查集Java实现)

HYSBZ - 1050(旅行comf Java实现)

原题地址

解法:枚举每一条边,对于这条边,我们需要找到集合中和其值相差最小的最大边,这个集合是指与包括i边在内的ST联通集。对于这一要求,我们只需对所有的边进行从小到大的排序,那么从i边开始,一条条地加入并查集,一旦形成上述的联通集,立刻停止。

import java.io.*;
import java.util.*;
public class Main{private static class edge{int x,y,v;}private static class cmp implements Comparator<edge>{@Overridepublic int compare(edge a,edge b){return a.v<b.v?-1:1;}}private static int fa[]=new int[505];private static int Find(int x){if(fa[x]==-1) return x;return fa[x]=Find(fa[x]);}private static int gcd(int a,int b){return b==0?a:gcd(b,a%b);}private static final int N=5000+5;private static edge e[]=new edge[N];public static void main(String[] args){int n,m,s,t;Scanner sc=new Scanner(new InputStreamReader(System.in));n=sc.nextInt();m=sc.nextInt();for(int i=0;i<m;i++){e[i]=new edge();e[i].x=sc.nextInt();e[i].y=sc.nextInt();e[i].v=sc.nextInt();}s=sc.nextInt();t=sc.nextInt();Arrays.sort(e,0,m,new cmp());int x1=0,y1=0;for(int i=0;i<m;i++){int ma=-1;Arrays.fill(fa,-1);for (int j=i; j<m; j++){int f1=Find(e[j].x),f2=Find(e[j].y);if (f1==f2) continue;fa[f1]=f2;if (Find(s)==Find(t)){ma=e[j].v;break;}}if (ma==-1&&i==0){System.out.printf("IMPOSSIBLE\n");System.exit(0);}if (ma==-1) break;if (x1==0||x1*e[i].v>ma*y1){x1=ma;y1=e[i].v;}}int x=gcd(x1,y1);if (x==y1) System.out.printf("%d\n",x1/y1);else System.out.printf("%d/%d\n",x1/x,y1/x);sc.close();}
}

转载于:https://www.cnblogs.com/zsyacm666666/p/6670458.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVA 11401 - Triangle Counting

Problem G Triangle Counting Input: Standard Input Output: Standard Output You are given n rods of length 1, 2…, n. You have to pick any 3 of them & build a triangle. How many distinct triangles can you make? Note that, two triangles will be considere…

苏州软件测试11k工资要什么水平,3个月从机械转行软件测试,他的入职薪资是11K...

原标题&#xff1a;3个月从机械转行软件测试&#xff0c;他的入职薪资是11K只要找到适合自己的学习方式&#xff0c;成功转行只是早晚的问题&#xff01;今天汇智妹给大家介绍的这位小伙伴&#xff0c;是咱们汇学联盟平台上的一位线上学员——小周。97年的小哥哥&#xff0c;19…

python idle 清屏问题的解决

在学习和使用python的过程中&#xff0c;少不了要与python idle打交道。但使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?我在stackoverflow看到这样两种答案&#xff1a;1.在shell中输入1 import os 2 os.system(cls) 这种方法只能在windows系统中cmd模式下的…

TCP/IP 原理--链路层

链路层作用&#xff1a; &#xff08;1&#xff09;为IP模块发送和接收IP数据报&#xff1b; &#xff08;2&#xff09;为ARP发送ARP请求和接受ARP应答 &#xff08;3&#xff09;为RARP发送RARP请求和接受ARP应答 协议&#xff1a;以太网和SLIP协议 A.以太网协议数据封装格式…

Sqoop拒绝连接错误

使用Sqoop远程连接MySQL导入数据到HBase数据库&#xff1a; sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysql://hzhiServer:3306/myssh?autoReconnecttrue" --table table_001 --username hadoop --password 1 --hbase-table table_001 --colum…

拆解凹多边形

偶遇需要拆解凹多边形 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media;namespace DrawPolygon {public static class Settings{public const float…

计算机教学的弊端,信息技术在教学中的利弊及解决对策

摘 要&#xff1a;信息技术教育已成为国家信息化事业的重要组成部分&#xff0c;是当今素质教育的重要内容之一。从阐述信息技术教育的内涵和发展阶段出发&#xff0c;分析了当前信息技术在教学应用中的优势和存在的问题&#xff0c;并提出了相应的解决对策。关键词&#xff1a…

【转】Linux命令之查看文件占用空间大小-du,df

原文网址&#xff1a;http://blog.csdn.net/wangjunjun2008/article/details/19840671 du(disk usage),顾名思义,查看目录/文件占用空间大小#查看当前目录下的所有目录以及子目录的大小$ du -h $ du -ah #-h:用K、M、G的人性化形式显示 #-a:显示目录和文件 du -h tmp du -ah tm…

一个FORK的面试题

为什么80%的码农都做不了架构师&#xff1f;>>> #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i0; i<2; i){ fork(); printf("-"); } wait(NULL); wait(NULL); return 0; }/c 如果…

C++11系列学习之二-----lambda表达式

C11添加了一项名为lambda表达式的新功能&#xff0c;通过这项功能可以编写内嵌的匿名函数&#xff0c;而不必编写独立函数和函数对象&#xff0c;使得代码更容易理解。lambda表达式的语法如下所示&#xff1a;[capture_block](parameters) exceptions_specification -> retu…

php四种基础算法:冒泡,选择,插入和快速排序法

许多人都说 算法是程序的核心&#xff0c;一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper&#xff0c;虽然很少接触到算法方面的东西 。但是对于冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;快速排序四种基本算法&#xff0c;我想还是要掌握…

GCPC2014 C Bounty Hunter

题意&#xff1a;给你一个平面上的点集&#xff08;x值各不相等&#xff09;&#xff0c;问你从最左边走到最右边&#xff08;只能以x递增的顺序&#xff09;&#xff0c;再从最右边回到最左边&#xff08;以x递减的顺序&#xff09;问你最短距离是多少。 解题思路&#xff1a;…

计算机启动时运行ccleaner,Ccleaner的使用方法

ccleaner是一款非常好用的系统优化工具&#xff0c;它可以提升电脑速度&#xff0c;可以对上网历史记录、临时文件夹、回收站垃圾清理、注册表进行垃圾项扫描和清理、软件卸载等功能&#xff0c;保护用户的个人浏览隐私&#xff0c;为Windows系统腾出更多硬盘空间。下面小编就为…

PLSQL Developer软件使用大全

PLSQL Developer软件使用大全 第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境&#xff0c;专门面向Oracle数据库存储程序单元的开发。如今&#xff0c;有越来越多的商业逻辑和应用逻辑转向了Oracle Server&#xff0c;因此&#xff0c;PL/SQL编程也成了整个开…

C++11系列学习之三----array/valarray

创建数组&#xff0c;是程序设计中必不可少的一环。我们一般可以有以下几种方法来创建数组。 一、C内置数组 数组大小固定&#xff0c;速度较快 通用格式是&#xff1a;数据类型 数组名[ 数组大小 ]; 如 int a[40];//一维数组 int a[5][10];//二维数组 二、vector创建数组 包…

实验7综合练习

一、填空&#xff1a;阅读下列程序说明和程序&#xff0c;在可选答案中&#xff0c;挑选一个正确答案。填补(1) (2) (3) (4)处空白&#xff0c;并注释说明为什么。 程序说明 求 1 2/3 3/5 4/7 5/9 … 的前15项之和。 运行示例&#xff1a; sum 8.667936 程序如下&#x…

计算机专业课的教学准备,计算机专业课程教学中的分层教学模式

《计算机专业课程教学中的分层教学模式》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《计算机专业课程教学中的分层教学模式(5页珍藏版)》请在人人文库网上搜索。1、编号&#xff1a;XXXX时间&#xff1a;2021年x月x日Error! No text of specified style in documen…

angular-过滤器

过滤器描述currency格式化数字为货币格式。filter从数组项中选择一个子集。lowercase格式化字符串为小写。orderBy根据某个表达式排列数组。uppercase格式化字符串为大写。内容中&#xff1a;数值转为货币格式 <p>总价 {{ (quantity * price) | currency }}</p> 排…

SSH三大框架的工作原理及流程

Hibernate工作原理及为什么要用? 原理&#xff1a; 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的<mapping resource"com/xx/User.hbm.xml"/>读取并解析映射信息 3.通过config.buildSessionFactory();/…

二分查找法(递归与循环实现)

问题&#xff1a; 给定一个排序数组和一个数k&#xff0c;要求找到第一个k的位置和最后一个k的位置 解析&#xff1a; 由于给定的数组是从小到大排序的&#xff0c;故可以按照二分查找法来找&#xff0c;下面分别从递归和循环两种方法来阐述&#xff1a; //递归方法 int GetF…