列表

详情


NC205486. 最低疫情风险返校路

描述

疫情严重影响了大学生的返校,但是,随着时间的推移,同学们不得不开始准备返校了。返校路上还是有风险的,为此,需要你编写一个程序,计算出一条从家到学校面临疫情风险最小的路径的风险。

输入描述

第一行是两个整数N、M(N<=100,M<=10000),N表示路途上有几个中间站,标号为1的路口是当前所在地,标号为N的路口是目的地,M则表示有几条路。
接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示从A到B有一条可行的路,C表示从A到B面临的疫情风险值。
输入保证至少存在1条,从家到学校的路线。

输出描述

输出一行,只有一个数值,表示从家到学校的需要面临的疫情的最小风险。

示例1

输入:

2 1
1 2 3

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 416K, 提交时间: 2021-08-14 17:34:13

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110;
int g[N][N];
int n,m;
bool st[N];
int dist[N];
int dijkstra()
{
    memset(dist,0x3f,sizeof dist);
    dist[1] = 0;
    for (int i=0;i<n-1;i++)
    {
        int t=-1;
        for (int j=1;j<=n;j++)
            if (!st[j]&&(t==-1||dist[j]<dist[t]))
                t = j;
         st[t]= true;
        for (int j=1;j<=n;j++)
                dist[j] = min(dist[j],dist[t]+g[t][j]);
    }
                return dist[n];
}
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>m;
    memset(g,0x3f,sizeof g);
    while (m--)
    {
        int a,b,c;
        cin>>a>>b>>c;
        g[a][b] = min(g[a][b],c);
        g[b][a] = min(g[b][a],c);
    }
    int t = dijkstra();
    printf ("%d",t);
    return 0;
}

Java(javac 1.8) 解法, 执行用时: 252ms, 内存消耗: 19160K, 提交时间: 2020-04-27 11:20:45

import java.util.Scanner;

public class Main {
	static Scanner cin = new Scanner(System.in);
	static int[][] dis = new int[110][110];
	
	public static void main(String[] args) {
		int n = cin.nextInt(), m = cin.nextInt();
		for(int i = 1; i <= n; i++) {
			for(int j = 1; j <= n; j++) {
				if(i == j) dis[i][j] = 0;
				else dis[i][j] = 0x3f3f3f3f;
			}
		}
		while(m-- > 0) {
			int A = cin.nextInt(), B = cin.nextInt(), C = cin.nextInt();
			dis[A][B] = dis[B][A] = Math.min(C, dis[A][B]);
		}
		for(int k = 1; k <= n; k++) {
			for(int i = 1; i <= n; i++) {
				for(int j = 1; j <= n; j++) {
					dis[i][j] = Math.min(dis[i][k] + dis[k][j], dis[i][j]);
				}
			}
		}
		System.out.println(dis[1][n]);
	}
}

上一题