当前位置:网站首页>1003 emergency (25 points) (PAT class a)
1003 emergency (25 points) (PAT class a)
2022-07-04 19:36:00 【Acacia moon tower】
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
I typed it according to the boss' blog ,,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;
}
边栏推荐
- Some thoughts on whether the judgment point is located in the contour
- Unity editor extends C to traverse all pictures in folders and subdirectories
- "Only one trip", active recommendation and exploration of community installation and maintenance tasks
- 《工作、消费主义和新穷人》的微信读书笔记
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
- Jetpack Compose 教程
- . Net ORM framework hisql practice - Chapter 2 - using hisql to realize menu management (add, delete, modify and check)
- The 300th weekly match of leetcode (20220703)
- 2019年蜀山区第十五届青少年信息学竞赛
- 2014 Hefei 31st youth informatics Olympic Games (primary school group) test questions
猜你喜欢
92.(cesium篇)cesium楼栋分层
Bi skills - permission axis
Some thoughts on whether the judgment point is located in the contour
Nebula importer data import practice
LeetCode第300场周赛(20220703)
Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
Stream流
Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
To sort out messy header files, I use include what you use
随机推荐
牛客小白月赛7 I 新建 Microsoft Office Word 文档
Summary and sorting of 8 pits of redis distributed lock
Stream stream
Hough transform Hough transform principle
2019年蜀山区第十五届青少年信息学竞赛
node_exporter部署
mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
Explore the contour drawing function drawcontours() of OpenCV in detail with practical examples
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点
The kth largest element in the array
LeetCode第300场周赛(20220703)
Online sql to excel (xls/xlsx) tool
Introduction to polyfit software
2021 合肥市信息学竞赛小学组
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
Oracle with as ORA-00903: invalid table name 多表报错
Unity adds a function case similar to editor extension to its script, the use of ContextMenu
项目中遇到的线上数据迁移方案1---总体思路整理和技术梳理
Shell 编程核心技术《一》