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

代码随想录第60天

94. 城市间货物运输 I

import java.util.*;
class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int bian= sc.nextInt();
        int [][]map=new int[n+1][n+1];
        for (int i = 0; i <= n; i++) {
            Arrays.fill(map[i],Integer.MAX_VALUE);
        }

        for (int i = 0; i < bian; i++) {
            int s1=sc.nextInt(),s2=sc.nextInt(),s3=sc.nextInt();
            map[s1][s2]=s3;
        }
        int[] res = new int[n + 1];
        Arrays.fill(res,Integer.MAX_VALUE);
        res[1]=0;
        for(int k=0;k<n;k++){
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if(map[i][j]!=Integer.MAX_VALUE&&res[i]!=Integer.MAX_VALUE){
                    if(res[i]+map[i][j]<res[j]){
                        res[j]=res[i]+map[i][j];
                    }
                }
            }
        }}
        System.out.println(res[n]==Integer.MAX_VALUE?"unconnected":res[n]);
    }
}

95. 城市间货物运输 II

#include <iostream>
#include <vector>
#include <list>
#include <climits>
using namespace std;

int main() {
    int n, m, p1, p2, val;
    cin >> n >> m;

    vector<vector<int>> grid;

    for(int i = 0; i < m; i++){
        cin >> p1 >> p2 >> val;
        // p1 指向 p2,权值为 val
        grid.push_back({p1, p2, val});

    }
    int start = 1;  // 起点
    int end = n;    // 终点

    vector<int> minDist(n + 1 , INT_MAX/2);
    minDist[start] = 0;
    bool flag = false;
    for (int i = 1; i <= n; i++) {
        for (vector<int> &f : grid) {
            int from = f[0];
            int to = f[1];
            int price = f[2];
            //cout << f[0] << " " << f[1] << " " << f[2] << endl;
            if (i < n) {
                if (minDist[to] > minDist[from] + price && minDist[from] != INT_MAX/2) minDist[to] = minDist[from] + price;
            } else { // 多加一次松弛判断负数环
                if (minDist[to] > minDist[from] + price && minDist[from] != INT_MAX/2) flag = true;

            }
        }

    }

    if (flag) cout << "circle" << endl;
    else if (minDist[end] == INT_MAX/2) {
        cout << "unconnected" << endl;
    } else {
        cout << minDist[end] << endl;
    }
}

96. 城市间货物运输 III

#include <iostream>
#include <cstring>
using namespace std;
const int N=1e4+7;
const int inf=0x3f3f3f3f;
struct node{
    int a,b,c;
}e[N];
int dist[N],back[N];
int n,m,st,ed,k;

void bf(){
    for(int i=1;i<=n;i++)dist[i]=inf;
    dist[st]=0;
    for(int i=0;i<k;i++){
        for(int i=1;i<=n;i++)back[i]=dist[i];
        for(int j=1;j<=m;j++){
            int u=e[j].a;
            int v=e[j].b;
            int z=e[j].c;
            dist[v]=min(dist[v],back[u]+z);
        }
    }
    return;
}

int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        e[i]={a,b,c};
    }
    cin>>st>>ed>>k;
    k+=1;
    bf();
    if(dist[ed]>=0x3f3f3f3f/2){
        cout<<"unreachable";
        return 0;
    }
    cout<<dist[ed];
    return 0;
}

http://www.kler.cn/a/457569.html

相关文章:

  • 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)
  • 美的空气净化器好用吗?拾梧、美的、戴森空气净化器除烟哪个好?
  • Rust中的Option枚举快速入门
  • Flask 快速入门
  • C语言:调试的概念和调试器的选择
  • 无刷直流电机(BLDC)六步换向法
  • python opencv的sift特征检测(Scale-Invariant Feature Transform)
  • 嵌入式系统 第十二讲 块设备和驱动程序设计
  • 跟着问题学18——大模型基础transformer模型详解(4)解码器
  • PilotGo
  • MySQL--》如何在MySQL中打造高效优化索引
  • 1、单片机寄存器-io输入实验笔记
  • Python毕业设计选题:基于python的酒店推荐系统_django+hadoop
  • React 之 Redux =》 理解+应用
  • rabbitmq相关使用
  • JavaScript:字符串JSON互转
  • 2.微服务灰度发布落地实践(agent实现)
  • flask后端开发(12):邮箱验证码功能实现
  • 线索二叉树的实现(c语言)
  • 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
  • vue+echarts实现疫情柱状图(全国确诊省市TOP10)
  • LeetCode 202. 快乐数 (C++实现)
  • OpenGL ES GLSL基础语法深度解析
  • Diffusion Transformer(DiT)——将扩散过程中的U-Net换成ViT:近频繁用于视频生成与机器人动作预测(含清华PAD详解)
  • springboot整合log4j2异步输出的配置3
  • 计算机毕业设计Python+知识图谱大模型AI医疗问答系统 健康膳食推荐系统 食谱推荐系统 医疗大数据 机器学习 深度学习 人工智能 爬虫 大数据毕业设计