当前位置: 首页 > news >正文

杭州网站建设哪家好嵌入式开发要学哪些课程

杭州网站建设哪家好,嵌入式开发要学哪些课程,小程序模版,在线教学的网站开发方案P1807 最长路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目要求我们求出第1号到第n号节点之间最长的距离。 我们想到使用拓扑排序来求最长路。 正常来讲,我们应该把1号节点入队列,再出队列,把一号节点能到达的所有的点的入度减一&a…

P1807 最长路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目要求我们求出第1号到第n号节点之间最长的距离。

我们想到使用拓扑排序来求最长路。

正常来讲,我们应该把1号节点入队列,再出队列,把一号节点能到达的所有的点的入度减一,并且将这些点求到达一号节点的最大距离。如果一个节点的入度为0,那说明所有与他直接来链接的点都跑了一边,最后最大的也就跑出来了。即使任意两个点有多条链接路径也不碍事,为什么呢?举个例子,一号和二号点有三条路径分别为1,2,3,我们放进队列里后,会先后跑这三段长度最后取得最优。但是这道题目有个小坑点,那就是这种情况

这种情况下我们初始时期是只存入了一号节点所置。

由于3号节点还有一条入度,而2号节点我们没有初始化放入,即使他的入度为0也不能进入队列,所以3号节点无法到达,但实际1号节点可以到达3号节点,解决方法就是首先把非1号的所有的入度为0的节点先入队列,然后排除干扰,最后就可以按照原步骤进行了。

附上代码


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.math.MathContext;
import java.security.PublicKey;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Objects;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
public class Main {	public static void main(String[] args) throws NumberFormatException, IOException  {
Scanner sc=new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw1=new PrintWriter(System.out);
String[] aStrings=br.readLine().split(" ");
aa=Integer.parseInt(aStrings[0]);
bb=Integer.parseInt(aStrings[1]);
al1=new ArrayList[aa+1];
int a;
rudu=new int[aa+1];
for(a=1;a<=aa;a++) {al1[a]=new ArrayList<>();
}
for(a=1;a<=bb;a++) {String[] bStrings=br.readLine().split(" ");int b=Integer.parseInt(bStrings[0]);int c=Integer.parseInt(bStrings[1]);int d=Integer.parseInt(bStrings[2]);al1[b].add(new edge(c, d));//存储边rudu[c]++;//入度加一
}for(a=2;a<=aa;a++) {if(rudu[a]==0) {//为了解决上述问题我们从2号节点开始,来求得所有入读为0的点的序号ll1.add(a);}
}
dis=new int[aa+1];
Arrays.fill(dis, Integer.MIN_VALUE);
dis[1]=0;//初始点到初始点的距离肯定为0
ll1.add(1);//在这里最后加入初始点
while(ll1.size()!=0) {//取出入读为0的点int a1=ll1.remove();for(edge b1:al1[a1]) {dis[b1.to]=Math.max(dis[b1.to], dis[a1]+b1.length);rudu[b1.to]--;//进行值得更改if(rudu[b1.to]==0) {//入度为0那么就加入队列ll1.add(b1.to);}}}
if(dis[aa]==Integer.MIN_VALUE) {System.out.println("-1");
}
else {System.out.println(dis[aa]);
}}public static int aa;//点的总数public static int bb;//边的总数public static ArrayList<edge>[] al1;//存储边的集合public static int[] rudu;//记录每一个点的入度public static LinkedList<Integer> ll1=new LinkedList<>();//记录每一个入度为0的点public static int[] dis;//记录每个点距离初始点的距离。}
class edge{int to;int length;public edge(int to, int length) {super();this.to = to;this.length = length;}}

http://www.yayakq.cn/news/617323/

相关文章:

  • 医院网站和微信公众号建设方案网站ftp管理工具
  • 做一个自己的网站多少钱注册公司的网站是什么
  • 外贸网站建设外西安网站建设行业动态
  • 电子商务网站设计说明书南山企业网站建设
  • 网站地址搜索用dw做网页的步骤
  • 做盗链网站国内图片下载网站
  • 上海企业网站制作公司iis默认网站打不开
  • 湖州网站开发区火炬手太仓新网站优化
  • 昆山 网站设计网站开发工程师课程
  • 网站建设犭金手指C排名15弄个app要花多少钱
  • python 如何做网站免费软件加速器
  • 做sgs认证公司网站潍坊智能建站模板
  • dw做网站设计html模板怎么使用
  • 唯品会 一家专门做特卖的网站手机版有没有做微场景的网站
  • 凯里网站建设流程vs2013 做网站
  • 网站建设培训东莞wordpress菜单代码
  • 国外获奖网站上海千途建站
  • 做壁纸壁的网站有什么区别嘉兴网站制作网站建设
  • 响应式环保网站模板下载网站空间转移
  • 网站开发要学习路线专业影视广告制作公司
  • 漫画网站php源码后台管理系统登录
  • 深圳网站优化公司哪家好怎么重新运行wordpress
  • 成都网站建设网站制作公司常德网站建
  • 世界上前端做的最好的网站seo外链收录
  • 一般的美工可以做网站吗网上销售怎样做网站
  • wordpress滑动菜单清远seo站内优化
  • 网站用什么程序做的怎么弄公司网站
  • 表格模板免费下载网站上海市住房和城乡建设部网站
  • 注册了域名怎么添加到自己的网站阿里云域名注册
  • 做什么网站吸引人企业管理咨询是做什么的