当前位置:网站首页>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;
}
边栏推荐
- Unity editor extends C to traverse all pictures in folders and subdirectories
- Is the securities account opened by qiniu safe?
- 神经网络物联网是什么意思通俗的解释
- 在线SQL转Excel(xls/xlsx)工具
- Lm10 cosine wave homeopathic grid strategy
- 1672. Total assets of the richest customers
- 建立自己的网站(15)
- Unity编辑器扩展C#遍历文件夹以及子目录下的所有图片
- Pytorch学习(四)
- 2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
猜你喜欢

神经网络物联网是什么意思通俗的解释

Oracle with as ORA-00903: invalid table name 多表报错

Build your own website (15)

Wireshark网络抓包

“只跑一趟”,小区装维任务主动推荐探索

如何使用Async-Awati异步任务处理代替BackgroundWorker?

神经网络物联网应用技术学什么

Explore the contour drawing function drawcontours() of OpenCV in detail with practical examples

在线文本行固定长度填充工具

小发猫物联网平台搭建与应用模型
随机推荐
每日一题(2022-07-02)——最低加油次数
sqlserver的CDC第一次查询的能读取到数据,但后面增删改读取不到,是什么原因
How to use async Awati asynchronous task processing instead of backgroundworker?
DeFi生态NFT流动性挖矿系统开发搭建
The kth largest element in the array
页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
PolyFit软件介绍
Generate XML elements
[uniapp] uniapp development app online Preview PDF file
Oracle with as ORA-00903: invalid table name 多表报错
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
添加命名空间声明
Opencv functions and methods related to binary threshold processing are summarized for comparison and use
Using FTP
1008 Elevator(20 分)(PAT甲级)
The 300th weekly match of leetcode (20220703)
2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import 'fmt' func
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
Use canal and rocketmq to listen to MySQL binlog logs
prometheus安装