本题用Dfs搜索或者Dijkstra算法都可以,当然也有其它的方法。这题感觉是pat中常见的类型,非常重要。

Dfs搜索代码:

#include<stdio.h>
int road[510][510],vst[510],hper[510];
int N,M,C1,C2,shpath=-1,maxhp=-1,cnt=0;
int main(){
void dfs(int from,int len,int helpers);
int i,j;
int c1,c2,l;
scanf("%d %d %d %d",&N,&M,&C1,&C2);
for(i=0;i<N;i++){
scanf("%d",&hper[i]);
vst[i]=0;
for(j=0;j<N;j++){
road[i][j]=-1;
road[j][i]=-1;
}
}
for(i=0;i<M;i++){
scanf("%d %d %d",&c1,&c2,&l);
road[c1][c2]=l;
road[c2][c1]=l;
}
vst[C1]=1;
dfs(C1,0,hper[C1]);
printf("%d %d\n",cnt,maxhp);
return 0;
}
void dfs(int from,int len,int helpers){
int i,j;
if(len>shpath&&shpath!=-1){
return;
}
if(from==C2){
if(len<shpath||shpath==-1){
shpath=len;
maxhp=helpers;
cnt=1;
}
else if(len==shpath){
cnt++;
if(helpers>maxhp){
maxhp=helpers;
}
}
return;
}
for(i=0;i<N;i++){
if(vst[i]==0&&road[from][i]!=-1){
vst[i]=1;
dfs(i,len+road[from][i],helpers+hper[i]);
vst[i]=0;
}
}
} 

Dijstra算法代码:

#include<stdio.h>
#define maxint 1<<28
int N,M,C1,C2;
int map[510][510],vst[510],dis[510],hel[510];
int pathcnt[510],pathhel[510];
void init(){
int i,j;
for(i=1;i<=N;i++){
vst[i]=0;
hel[i]=0;
dis[i]=maxint;
pathcnt[i]=0;
pathhel[i]=0;
for(j=1;j<=N;j++){
map[i][j]=map[j][i]=maxint;
}
}
}
void Dijstra(){
int i,j,k;
dis[C1]=0;
pathcnt[C1]=1;
pathhel[C1]=hel[C1];
for(i=1;i<=N;i++){
int imin=maxint;
for(j=1;j<=N;j++){
if(!vst[j]&&dis[j]<imin){
imin=dis[j];
k=j;
}
}
vst[k]=1;
for(j=1;j<=N;j++){
if(vst[j]==0){
if(dis[j]>dis[k]+map[k][j]){
dis[j]=dis[k]+map[k][j];
pathhel[j]=pathhel[k]+hel[j];
pathcnt[j]=pathcnt[k];
}
else if(dis[j]==dis[k]+map[k][j]){
pathcnt[j]+=pathcnt[k];
if(pathhel[j]<pathhel[k]+hel[j]){
pathhel[j]=pathhel[k]+hel[j];
}
}
}
}
if(imin==maxint||k==C2) return;
}
}
int main(){
int i,j,from,to,dist;
scanf("%d %d %d %d",&N,&M,&C1,&C2);
C1++;
C2++;
init();
for(i=1;i<=N;i++){
scanf("%d",&hel[i]);
}
for(i=1;i<=M;i++){
scanf("%d %d %d",&from,&to,&dist);
map[from+1][to+1]=map[to+1][from+1]=dist;
}
Dijstra();
printf("%d %d\n",pathcnt[C2],pathhel[C2]);
return 0;
}

浙大PAT 1003题 1003. Emergency相关推荐

  1. 牛客网 PTA乙级真题 1003 数素数

    数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...

  2. 浙大pat | 浙大pat 牛客网PAT顶级(Top Level)练习题 1001

    1001 LUCKY STRING 1872 8254 22% 题目描述 A string s is LUCKY if and only if the number of differentchara ...

  3. 浙大PAT甲级1040

    浙大PAT甲级1040 原题 问题分析 原题 1040 Longest Symmetric String (25 分) Given a string, you are supposed to outp ...

  4. PAT乙级题库踩坑实录

    PAT乙级题库踩坑实录 [截止2021.7.28乙级题库已经全部AC] 题目名称: 1030 完美数列 (25 分) 测试点3踩坑 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第m ...

  5. pat真题1002 写出这个数C语言解法和java解法

    pat真题1002 写出这个数C语言解法和java解法 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这 ...

  6. PAT刷题之乙级1033 旧键盘打字

    目录 PAT刷题之乙级1033(cpp) 题目描述 输入格式 输出格式 输入样例 输出样例 问题分析 代码实现 运行实现 PAT刷题之乙级1033(cpp) 题目描述 旧键盘上坏了几个键,于是在敲一段 ...

  7. PAT刷题集(乙级)1003 我要通过!(20 分)

    1003 我要通过!(20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  8. 牛客网 PAT 算法历年真题 1003: 数素数 (20)

    1003:数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整 ...

  9. PAT (Advanced Level) 1003 Emergency(最短路+动态规划)

    题目链接:点击查看 题目大意:给出一个无向图,再给出起点和终点,要求消防队员从起点出发,尽可能快的赶往终点,每个点都有一个权值w,代表该点有多少个人口,问消防队员在尽可能快的赶到终点的前提下,一共有多 ...

最新文章

  1. Chain of Responsibility 责任链模式 MD
  2. 升级EXCHANGE2010到2013(A)
  3. mac搭建php审计环境,[php审计实战篇]Simple-Log v1.6 安装逻辑问题
  4. js 中动态添加成员对象与数组或map转换(成员字段含有.)
  5. vue仿饿了么点餐手机端
  6. 排座椅(洛谷-P1056)
  7. 个性潮流的设计PSD分层模板
  8. LINUX系统用户操作命令
  9. views.py视图函
  10. 【转】 Apache分析脚本
  11. 微信短信验证码注意事项(tp3.2-腾讯云)
  12. android无线充电技术,无线充电Qi通信协议分析,充电qi通信协议
  13. 考研报考人数的灰色模型
  14. 人工智能+区块链+云协同赋能工业制造
  15. 我的战地日记:42期学员闫要峰
  16. Registration
  17. 利用Linux主机创建NFS服务
  18. python 最准确的图片转文字_使用Tesseract+python进行图片转文字记录
  19. 学计算机 有什么好的二本大学排名,二本大学排名
  20. 计算机学院办活动给什么奖品好,学校搞活动,给学生发什么活动礼品才好呢?...

热门文章

  1. 转换器SherbendGeneralizer示例
  2. **2021,靠谱的网赚项目,遇上靠谱的你,谁说赚钱不轻松**
  3. [深度学习笔记(1)]深度学习入门
  4. 基于ip-iq变换的谐波检测算法,并联型APF 有源电力滤波器 谐波电流检测
  5. API数据接口该怎么对接
  6. 从Mpx资源构建优化看splitChunks代码分割
  7. deepdive案例实验中的所遇问题即解决
  8. Android 9 自动恢复出厂设置问题(auto-recovery)
  9. 01.三节点集群搭建--VM配置
  10. CAPL基础篇-----CAPL中的定时器操作