zoukankan      html  css  js  c++  java
  • 最短路径问题

    题目描述

    NowCoder今年买了一辆新车,他决定自己开车回家过年。回家过程中要经过n个大小收费站,每个收费站的费用不同,你能帮他计算一下最少需要给多少过路费吗?

    输入描述:

    输入包含多组数据,每组数据第一行包含两个正整数m(1≤m≤500)和n(1≤n≤30),其中n表示有n个收费站,编号依次为1、2、…、n。出发地的编号为0,终点的编号为n,即需要从0到n。

    紧接着m行,每行包含三个整数f、t、c,(0≤f, t≤n; 1≤c≤10),分别表示从编号为f的地方开到t,需要交c元的过路费。

    输出描述:

    对应每组数据,请输出至少需要交多少过路费。

    输入

    8 4
    0 1 10
    0 2 5
    1 2 2
    1 3 1
    2 1 3
    2 3 9
    2 4 2
    3 4 4

    输出

    7

    #include "stdio.h"
    int main(){
        int a[31][31];
        int m,n;
        while(scanf("%d%d",&m,&n)!=EOF){
            for(int i=0;i<31;i++){
                for(int j=0;j<31;j++){
                    a[i][j]=0;
                }
            }
            int f,t,c;
            for(int i=0;i<m;i++){
                scanf("%d%d%d",&f,&t,&c);
                a[f][t]=c;
            }
            for(int k=0;k<=n;k++){
                for(int i=0;i<=n;i++){
                    for(int j=0;j<=n;j++){
                        if(k!=i&&k!=j&&i!=j){
                            if(a[i][k]>0&&a[k][j]>0&&a[i][j]>0)
                            a[i][j]=(a[i][k]+a[k][j])<a[i][j]?a[i][k]+a[k][j]:a[i][j];
                            else if(a[i][k]>0&&a[k][j]>0&&a[i][j]==0)
                              a[i][j]=a[i][k]+a[k][j];
                        }
                    }
                }
            }
            printf("%d
    ",a[0][n]);
        }
    }
  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/achao123456/p/10163955.html
Copyright © 2011-2022 走看看