PAT甲级1003. Emergency
PAT甲级1003. Emergency
题意:
作为一个城市的紧急救援队长,你将得到一个你所在国家的特别地图。该地图显示了几条分散的城市,连接着一些道路。每个城市的救援队数量和任何一对城市之间的每条路线的长度在地图上标记。当你从其他城市发出紧急电话时,
你的工作是尽快引导你的人到这个地方,同时在途中尽可能多的呼唤城市中的别的救援队。
输入
每个输入文件包含一个测试用例。对于每个测试用例,第一行包含4个正整数:N(<= 500) - 城市数量(城市编号从0到N-1),M - 道路数量C1和C2 - 你目前在的城市,你必须分别保存。下一行包含N个整数,其中i-
整数是第i个城市的救援队数。然后M行跟随,每个描述一个具有三个整数c1,c2和L的道路,分别是通过道路连接的一对城市和该道路的长度。保证从C1到C2至少存在一条路径。
输出
对于每个测试用例,打印一行两个数字:C1和C2之间不同最短路径的数量以及可以收集的最大救援队数。
一行中的所有数字必须分开一个空格,并且在行的末尾不允许额外的空格。
思路:
题意就是求city1到city2的单源最短路径,并且求出最短路径下能搜集最多救援队数量。
ac代码:
C++
// pat1003.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
const int MAX = 0x7fffffff;
int road[501][501]; //记录city间的距离
int rescue[501]; //记录city的救援队
int n, m;
int starting, ending;
int len[501]; //记录start到各个点的距离
bool visit[501] = { false }; //保存已经遍历的点
int main()
{
cin >> n >> m >> starting >> ending;
for (int i = 0; i < n; i++)
cin >> rescue[i];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j) road[i][j] = 0;
else road[i][j] = MAX;
}
}
for (int i = 0; i < n; i++)
len[i] = MAX;
int c1,c2;
for (int i = 0; i < m; i++)
{
cin >> c1 >> c2;
cin >> road[c1][c2];
road[c2][c1] = road[c1][c2];
if (c1 == starting) len[c2] = road[c1][c2];
if (c2 == starting) len[c1] = road[c1][c2];
}
int tempmin = MAX,tempindex;
int diffdis[501] = { 0 }; //记录有几种最短路径
diffdis[starting] = 1;
len[starting] = 0;
int maxpeo[501] = { 0 }; //记录能搜集的最大救援队数量
maxpeo[starting] = rescue[starting];
while(1)
{
tempmin = MAX;
for (int i = 0; i < n; i++)
{
if (!visit[i] && len[i] < tempmin)
{
tempmin = len[i];
tempindex = i;
}
}
visit[tempindex] = true;
for (int i = 0; i < n; i++)
{
if (!visit[i] && road[tempindex][i] != MAX && tempmin + road[tempindex][i] < len[i])
{
len[i] = tempmin + road[tempindex][i];
diffdis[i] = diffdis[tempindex];
maxpeo[i] = maxpeo[tempindex] + rescue[i];
}
else if (!visit[i] && road[tempindex][i] != MAX && tempmin + road[tempindex][i] == len[i])
{
diffdis[i] += diffdis[tempindex];
maxpeo[i] = max(maxpeo[i], maxpeo[tempindex] + rescue[i]);
}
}
if (tempindex == ending) break;
}
cout << diffdis[ending] << " " << maxpeo[ending] << endl;
return 0;
}
PAT甲级1003. Emergency的更多相关文章
- 图论 - PAT甲级 1003 Emergency C++
PAT甲级 1003 Emergency C++ As an emergency rescue team leader of a city, you are given a special map o ...
- PAT 甲级 1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- PAT 甲级1003 Emergency (25)(25 分)(Dikjstra,也可以自己到自己!)
As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...
- PAT 甲级 1003 Emergency
https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376 As an emergency rescue ...
- PAT Advanced 1003 Emergency 详解
题目与翻译 1003 Emergency 紧急情况 (25分) As an emergency rescue team leader of a city, you are given a specia ...
- PAT Advanced 1003 Emergency (25) [Dijkstra算法]
题目 As an emergency rescue team leader of a city, you are given a special map of your country. The ma ...
- PAT甲级1003题解——Dijkstra
解题步骤: 1.初始化:设置mat[][]存放点之间的距离,vis[]存放点的选取情况,people[]存放初始时每个城市的人数,man[]存放到达每个城市的救援队的最多的人数,num[]存放到达每个 ...
- PAT (Advanced Level) Practise 1003 Emergency(SPFA+DFS)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- PAT 解题报告 1003. Emergency (25)
1003. Emergency (25) As an emergency rescue team leader of a city, you are given a special map of yo ...
随机推荐
- IT人员必备linux安全运维之Ssh用途、安全性、身份认证以及配置……【转】
SSH一般用途 提供shell,解决telnet不安全的传输 1.修改默认ssh默认端口 vi /etc/ssh/sshd_config 修改之后重启 >systemctl restart ss ...
- 简单实现JS上传图片预览功能
HTML代码 <div class="upload"> <input type="button" class="btn" ...
- 147.Insertion Sort List---链表排序(直接插入)
题目链接 题目大意:对链表进行插入排序. 解法:直接插入排序.代码如下(耗时40ms): public ListNode insertionSortList(ListNode head) { List ...
- HDU 6187 Destroy Walls (对偶图最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6187 题意:有一个V个结点M条边的带边权无向平面图,有一个人在一个区域,要拆一些墙使得他可以到达任意一 ...
- javascript 之数据类型--01
写在前面 国庆整理资料时,发现刚开始入门前端时学习JS 的资料,打算以一个基础入门博客记录下来,有不写不对的多多指教: 先推荐些书籍给需要的童鞋 <JavaScript 高级程序设计.pdf&g ...
- maven工程的建立
/* 我曾经接触过一个Java web项目,在进行部署时,发现这个项目涉及了maven 没有接触过maven项目的我,发现了如果需要导入maven工程,需要先在eclipse里面对maven进行配置, ...
- salt-api起不来:ImportError('No module named wsgiserver2',)
问题:启动salt-api时没有报错但是没有端口,查看/var/log/salt/api发现如下报错: 解决方法: 下载wsgiserver2文件,放到/usr/lib64/python2.7/sit ...
- final修饰的变量是引用不能改变还是引用的对象不能改变
我们都知道final修饰变量时 会变为常量,但是使 用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 下面让我们来看这段代码: /** * 验证final修饰的变量是引用不能变, ...
- 转:在CentOS 7.3使用yum安装 MySql5.6.24
按照CentOS 6.5的方法在CentOS 7上安装会失败,需要按照下文进行安装. 1.安装rpm包 Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无 ...
- java基础15 内部类(成员内部类、局部内部类)和匿名内部类
一.内部类 1.1.1.成员内部类 一个类定义在另一个类的内部,那么该类就叫作成员内部类 1.1.2.成员内部类访问方式 方式一:在外部类中提供一个方法创建内部类的对象进行访问 方式二:在 ...