#include <stdio.h>  #define N 501
#define M 1000000int rescue[N];// = {1,2,1,5,3}
int startP,endP;
int path[N]={0};
int size=0;
int vex[N][N]={0};
int visit[N]={0};
int maxR=0;
int minP=M;
int pathcount=1;
int pCount=0;//路径指针void DFS(int start, int end){   int j,i = start;if(start == end){//找到int t, sumP=0, sumR=0;for(t=0;t<pCount;t++){sumP += vex[path[t]][path[t+1]];sumR += rescue[t];}sumR += rescue[pCount];if(sumP == minP) {if(sumR > maxR) {maxR = sumR;}pathcount++;}if(sumP < minP) {minP = sumP;pathcount = 1;maxR = sumR;}return;} else {for(j=0;j<size;j++){if(vex[i][j] != 0 && visit[j] == 0){visit[j] = 1;path[++pCount] = j;DFS(j, end);path[pCount--] = 0; visit[j] = 0;}}}
}  void init(){ int n,pCountt; int i; scanf("%d %d %d %d",&n, &pCountt, &startP, &endP); size = n; for(i=0;i<n;i++){ scanf("%d", &rescue[i]); } int r,c,value; for(i=0;i<pCountt;i++){ scanf("%d %d %d", &r, &c, &value); vex[r][c] = vex[c][r] = value; }visit[startP] = 1;path[0] = startP;DFS(startP, endP);
} /*
void init(){  int i,n,pCount;startP=0;endP=4;n=5;  size = n;
//  rescue[size] = {1,2,1,5,3};  vex[0][1] = vex[1][0] = 1;  vex[0][2] = vex[2][0] = 2;  vex[0][3] = vex[3][0] = 1;  vex[1][2] = vex[2][1] = 1;vex[2][4] = vex[4][2] = 1;  vex[3][4] = vex[4][3] = 2;  visit[startP] = 1;   path[0] = startP;DFS(startP, endP);
}
*/
int main(){  init();  //  printf("%d", vex[399][499]);  printf("%d %d", pathcount, maxR);return 0;
}

三个测试点没过

PAT 1003 Emergency 递归记录访问路径相关推荐

  1. 迷宫探索DFS(递归记录来回路径)

    Problem Description 有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关:请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input ...

  2. PAT 1003 Emergency(最短路(迪杰斯特拉||贝尔曼)最小边权下的最大点权)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  3. PAT 1003 Emergency

    #include <stdio.h> #define N 501int rescue[N] = {1,2,1,5,3}; int startP,endP; int res[N] = {0} ...

  4. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

  5. PAT甲级1003 Emergency Dijkstra算法(堆优化版/朴素版)

    前言   最近花了很多的时间在写JAVA项目上面,疏忽了算法和数据结构的学习.最近突然醒悟基础更为重要,打算从今天开始每天抽出一些时间做下PAT甲级的题目.现有题库的前两题很简单,从第三题开始吧. 题 ...

  6. PAT(甲级) 1003. Emergency

    1003 . Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emer ...

  7. PAT甲级 1003 Emergency

    PAT甲级 1003 Emergency As an emergency rescue team leader of a city, you are given a special map of yo ...

  8. 记录一下自己写的小工具:shell 调度 SQL 批处理,递归查找调度路径

    写这段代码的背景: 1:老项目,因为一些原因没有使用一些流行的DAG调度平台,而是通过使用Linux定时任务调度SHELL的方式来执行每日的批处理调度 2:整个的批处理调度一共有三个入口SHELL,也 ...

  9. 1003 Emergency 题目解析

    文章目录 题目描述 题意理解 解题思路 核心算法 完整代码 题目描述 1003 Emergency As an emergency rescue team leader of a city, you ...

最新文章

  1. Excel的数据分析—排位与百分比
  2. EOS技术及生态系统介绍
  3. 360修复高危漏洞可以修复吗_360代码卫士助D-LINK修复多个高危漏洞
  4. if you want to have your life valuable
  5. 电气期刊论文实现:考虑斜坡约束、开停机时间约束的电力机组组合(程序讲解)
  6. 满分最优解法:1007 素数对猜想 (20分)
  7. java 类无法实例_Java无法从类实例访问类方法
  8. 通信人,请不要吝啬举手之劳
  9. Ecshop:后台添加新功能栏目以及管理权限设置
  10. 光纤通道(FC: Fibre Channel)
  11. java 快速从树节点找到数据_数据结构与算法:单向链表和双向链表
  12. ASP.Net学习笔记008--ASP.Net揭秘之Input版自增补充说明
  13. winform textbox提示历史记录
  14. 获取ip地址 域名获取与解析
  15. 深入理解javascript中的立即执行函数(function(){…})() 1
  16. 在Nginx中配置SSL证书
  17. PS2模拟器 PCSX2 新手向
  18. 人类的社会制度:封建制度(封建社会)
  19. 外汇天眼:开仓、平仓、持仓、锁仓是什么意思?
  20. dd命令创建一个大文件

热门文章

  1. requests有意思的proxies参数-何时使用代理有效
  2. 利用Future异步获取多线程的返回结果
  3. iOS逆向工程- 工具详解
  4. 一个奇怪的问题:tomcat 栈溢出 StackOverflowError错误
  5. Centos 6.2出现Disk sda contains BIOS RAID metadata解决方法
  6. VIM Emacs 临时获得权限(:w !sudo tee %)
  7. [MySQL FAQ]系列 -- 新年新思想:MySQL也能并发导入数据
  8. java导出服务器已经配置好的excel模板
  9. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
  10. js中的cookie的读写操作