日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

發(fā)布時(shí)間:2025/4/5 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 題目分析
    • 題目鏈接

題目分析

分析:求單源最短路,使用dijkstra()算法。
最短路的條數(shù),和最短路中 人數(shù)最多的一條,輸出最多人數(shù)。

本題點(diǎn)比較少,使用鄰接矩陣d[N][N]來(lái)存。

ac代碼

#include<bits/stdc++.h> using namespace std; const int N = 510;int n, m , S, T; int d[N][N]; int w[N]; //點(diǎn)權(quán) int dist[N]; //最短路 int cnt[N];//最短路的數(shù)量 int sum[N]; // 人數(shù)求和bool st[N]; //是否求出過(guò)最短路void dijkstra(){memset(dist, 0x3f , sizeof dist); // 距離初始化dist[S] = 0; // cnt[S] = 1; //初始化:從起點(diǎn)出發(fā)的路徑只有一種sum[S] =w[S];//起點(diǎn)的點(diǎn)權(quán)是w[S]for(int i = 0 ;i< n; i++){int t = -1;for(int j = 0 ;j<n; j++){if(!st[j] &&(t== -1 || dist[j]< dist[t]))t = j;}st[t] =true;for(int j =0 ;j<n; j++){//最短路唯一if(dist[j] >dist[t] + d[t][j]){dist[j] =dist[t] +d[t][j];cnt[j] =cnt[t]; //到j(luò)的最短路數(shù)量 = 到t的最短路數(shù)量sum[j] = sum[t] + w[j]; // 最大人數(shù)更新}//最短路不唯一,合并else if( dist[j] == dist[t] +d[t][j]){cnt[j] += cnt[t]; //最短路數(shù)量合并sum[j] = max(sum[j] , sum[t] + w[j]); //最大人數(shù)更新}}} } int main(){cin >> n >> m >> S >> T;for(int i =0 ; i< n; i++) cin>> w[i];memset(d, 0x3f, sizeof d); //鄰接矩陣初始化 while(m--){int a, b, c;cin >> a >> b >> c;d[a][b] =d[b][a] = min(d[a][b] ,c); //讀入距離,讀入最小的一條}dijkstra();//輸出 最短路數(shù)量,最大人數(shù)cout<< cnt[T] <<" "<<sum[T]<<endl; }

題目鏈接

PAT甲級(jí)1003 Emergency

ACWING1475. 緊急情況

總結(jié)

以上是生活随笔為你收集整理的PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。