zoukankan      html  css  js  c++  java
  • SSL 1636——城市交通

    Description

      有n个城市,编号1~n,有些城市之间有路相连,有些则没有,有路则当然有一个距离。现在规定只能从编号小的城市到编号大的城市,问你从编号为1的城市到编号为n的城市之间的最短距离是多少?

    Input

    先输入一个n,表示城市数,n小于100。
    下面的n行是一个n*n的邻接矩阵map[i,j],其中map[i,j]=0表示城市i和城市j之间没有路相连,否则为两者之间的距离。

    Output

    输出格式:一个数,表示最少要多少时间。
    输入数据保证可以从城市1飞到城市n。

    Sample Input

    11
    0 5 3 0 0 0 0 0 0 0 0
    5 0 0 1 6 3 0 0 0 0 0
    3 0 0 0 8 0 4 0 0 0 0
    0 1 0 0 0 0 0 5 6 0 0
    0 6 8 0 0 0 0 5 0 0 0
    0 3 0 0 0 0 0 0 0 8 0
    0 0 4 0 0 0 0 0 0 3 0
    0 0 0 5 5 0 0 0 0 0 3
    0 0 0 6 0 0 0 0 0 0 4
    0 0 0 0 0 8 3 0 0 0 3
    0 0 0 0 0 0 0 3 4 3 0
    这里写图片描述
    Sample Output

    13


    一道dp题,听说可以最短路做。
    两个循环即可ACE也
    动态转移方程为f[i]:=min(f[i],f[j]+a[j,i])
    先要将f[i]设为maxlongint
    一重循环枚举从哪个点出发
    一重循环枚举到哪个点


    代码如下:

    var  n,i,j,min:longint;
         a:array[0..101,0..101]of longint;
         f:array[0..100]of longint; 
    begin
      readln(n);
      for i:=1 to n do
        begin
          for j:=1 to n do read(a[i,j]);
          readln;
        end;
      f[1]:=0;
      for i:=2 to n do
        begin
          min:=maxlongint;
          for j:=1 to i-1 do
            if a[j,i]<>0 then
              if f[j]+a[j,i]<min then min:=f[j]+a[j,i];
          f[i]:=min;
        end;
      write(f[n]);
    end.
  • 相关阅读:
    Java中文语言处理HanLP
    python的jieba分词词性标注(转载)
    solr 自聚类实现
    IntelliJ IDEA 创建 java Maven项目
    javat Itext实践 pdf
    java 中PriorityQueue优先级队列使用方法
    java实现 tf-idf
    Solr6.6 IK 中文分词的配置和使用
    yaha分词
    实现自动文本摘要(python,java)
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412397.html
Copyright © 2011-2022 走看看