当前位置:网站首页>1003 Emergency(25 分)(PAT甲级)
1003 Emergency(25 分)(PAT甲级)
2022-07-04 17:59:00 【相思明月楼】
Problem Description:
As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are marked on the map. When there is an emergency call to you from some other city, your job is to lead your men to the place as quickly as possible, and at the mean time, call up as many hands on the way as possible.
Input Specification:
Each input file contains one test case. For each test case, the first line contains 4 positive integers: N (≤500) - the number of cities (and the cities are numbered from 0 to N−1), M - the number of roads, C1 and C2 - the cities that you are currently in and that you must save, respectively. The next line contains N integers, where the i-th integer is the number of rescue teams in the i-th city. Then M lines follow, each describes a road with three integers c1, c2 and L, which are the pair of cities connected by a road and the length of that road, respectively. It is guaranteed that there exists at least one path from C1 to C2.
Output Specification:
For each test case, print in one line two numbers: the number of different shortest paths between C1 and C2, and the maximum amount of rescue teams you can possibly gather. All the numbers in a line must be separated by exactly one space, and there is no extra space allowed at the end of a line.
Sample Input:
5 6 0 2
1 2 1 5 3
0 1 1
0 2 2
0 3 1
1 2 1
2 4 1
3 4 1
Sample Output:
2 4
照着大佬博客敲了一遍,,https://www.liuchuo.net/archives/2359
#include <iostream>
#include <algorithm>
using namespace std;
int n, m, c1, c2;
int e[510][510], weight[510], dis[510], num[510], w[510];
bool visit[510];
const int inf = 999999;
int main() {
scanf("%d %d %d %d", &n, &m, &c1, &c2);
for(int i = 0; i < n; i++) {
scanf("%d", &weight[i]);
}
fill(e[0], e[0]+510*510, inf);
fill(dis, dis+510, inf);
int x, y, v;
for(int i = 0; i < m; i++) {
scanf("%d %d %d", &x, &y, &v);
e[x][y] = e[y][x] = v;
}
dis[c1] = 0;
w[c1] = weight[c1];
num[c1] = 1;
for(int i = 0; i < n; i++) {
int u = -1, minn = inf;
for(int j = 0; j < n; j++) {
if(visit[j] == false && dis[j] < minn) {
u = j;
minn = dis[j];
}
}
if(u == -1) break;
visit[u] = true;
for(int v = 0; v < n; v++) {
if(visit[v] == false && e[u][v] != inf) {
if(dis[u] + e[u][v] < dis[v]) {
dis[v] = dis[u] + e[u][v];
num[v] = num[u];
w[v] = w[u] + weight[v];
} else if(dis[u] + e[u][v] == dis[v]) {
num[v] = num[v] + num[u];
if(w[u] + weight[v] > w[v]) {
w[v] = w[u] + weight[v];
}
}
}
}
}
printf("%d %d\n", num[c2], w[c2]);
return 0;
}
边栏推荐
- 读写关闭的channel是啥后果?
- 物联网应用技术的就业前景和现状
- Unity adds a function case similar to editor extension to its script, the use of ContextMenu
- Wireshark网络抓包
- YOLOv5s-ShuffleNetV2
- PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
- [uniapp] uniapp development app online Preview PDF file
- DeFi生态NFT流动性挖矿系统开发搭建
- 小发猫物联网平台搭建与应用模型
- Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
猜你喜欢
Detailed explanation of the binary processing function threshold() of opencv
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
Nebula importer data import practice
How to use async Awati asynchronous task processing instead of backgroundworker?
在线文本行固定长度填充工具
LeetCode第300场周赛(20220703)
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
redis分布式锁的8大坑总结梳理
PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
神经网络物联网平台搭建(物联网平台搭建实战教程)
随机推荐
YOLOv5s-ShuffleNetV2
数组中的第K个最大元素
redis分布式锁的8大坑总结梳理
国元期货是正规平台吗?在国元期货开户安全吗?
牛客小白月赛7 谁是神箭手
《看完就懂系列》字符串截取方法substr() 、 slice() 和 substring()之间的区别和用法
从实时应用角度谈通信总线仲裁机制和网络流控
Pytest 可视化测试报告之 Allure
建立自己的网站(15)
The difference and usage between substr (), slice (), and substring () in the string interception methods of "understand series after reading"
Crawler (6) - Web page data parsing (2) | the use of beautifulsoup4 in Crawlers
LeetCode 赎金信 C#解答
Using SSH
Detailed explanation of issues related to SSL certificate renewal
启牛开的证券账户安全吗?
1006 Sign In and Sign Out(25 分)(PAT甲级)
Introduction to polyfit software
1011 World Cup Betting (20 分)(PAT甲级)
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
1672. Total assets of the richest customers