L3-004. 肿瘤诊断

题目链接:https://www.patest.cn/contests/gplt/L3-004

BFS

之前尝试使用递归dfs,提交后发现有两个段错误,发现递归层数太多,然后改用bfs解决。

代码如下:

  1. #include<cstdio>
  2. #include<stack>
  3. #define N 505
  4. #define MAX 5000
  5. using namespace std;
  6. int n,m,s,d;
  7. int pro[N];
  8. int Map[N][N];
  9. bool mark[N];
  10. int sum[N];
  11. int path[N];
  12. int Distance[N];
  13. int person[N];
  14. int i,j;
  15. stack<int>st;
  16. int main(void){
  17. freopen("in.txt","r",stdin);
  18. scanf("%d%d%d%d",&n,&m,&s,&d);
  19. for(i=;i<n;++i)scanf("%d",&pro[i]);
  20. for(i=;i<n;++i)
  21. for(j=;j<n;++j)Map[i][j]=MAX;
  22. while(m--){
  23. int len;
  24. scanf("%d%d%d",&i,&j,&len);
  25. if(Map[i][j]>len)Map[i][j]=Map[j][i]=len;
  26. }
  27. for(i=;i<n;++i){
  28. Distance[i]=MAX;
  29. sum[i]=;
  30. person[i]=pro[s];
  31. if(Map[s][i]<MAX){
  32. Distance[i]=Map[s][i];
  33. path[i]=s;
  34. person[i]+=pro[i];
  35. }
  36. }
  37. mark[s]=,Distance[s]=;
  38. while(){
  39. int k,m=MAX;
  40. for(i=;i<n;++i){
  41. if(!mark[i]&&m>Distance[i]){
  42. m=Distance[i];
  43. k=i;
  44. }
  45. }
  46. if(m==MAX)break;
  47. mark[k]=;
  48. for(i=;i<n;++i){
  49. if(!mark[i]){
  50. if(Distance[i]>Distance[k]+Map[k][i]){
  51. Distance[i]=Distance[k]+Map[k][i];
  52. person[i]=person[k]+pro[i];
  53. path[i]=k;
  54. sum[i]=sum[k];/**not 1**/
  55. }else if(Distance[i]==Distance[k]+Map[k][i]){
  56. sum[i]+=sum[k];/**not ++**/
  57. if(person[i]<person[k]+pro[i]){
  58. person[i]=person[k]+pro[i];
  59. path[i]=k;
  60. }
  61. }
  62. }
  63. }
  64. }
  65. int temp=pro[d];
  66. int k=d;
  67. while(k!=s){
  68. st.push(k);
  69. k=path[k];
  70. temp+=pro[k];
  71. }
  72. printf("%d %d\n",sum[d],temp);
  73. printf("%d",s);
  74. while(!st.empty()){
  75. printf(" %d",st.top());
  76. st.pop();
  77. }
  78. printf("\n");
  79. return ;
  80. }

L3-004. 肿瘤诊断的更多相关文章

  1. pat 甲级 团体天梯 L3-004. 肿瘤诊断

    L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...

  2. PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)

    L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...

  3. 【经典/基础BFS+略微复杂的题意】PAT-L3-004. 肿瘤诊断

    L3-004. 肿瘤诊断 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是 ...

  4. L3-004 肿瘤诊断 dfs bfs

    在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...

  5. PAT L3-004 肿瘤诊断(三维广搜)

    在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...

  6. PAT天梯赛L3-004 肿瘤诊断

    题目链接:点击打开链接 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每 ...

  7. 团体程序设计天梯赛 L3-004. 肿瘤诊断

    数组的大小不能开太大,否则会出现段错误 用bfs而不用dfs,dfs存储太多中间过程,会超内存 #include <stdio.h> #include <stdlib.h> # ...

  8. PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS

    题目分析: 可能是我的理解能力比较差,在读题的时候一直以为所有的切片是可以排列组合的,并不是按照输入顺序就定死的,那么这题就变得十分的复杂啦~~~~~,查看的题解之后发现所有的切片并没有所谓的自由组合 ...

  9. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

随机推荐

  1. Windows下安装Redmine-2.5.3

    安装准备 服务器操作系统:Windows Server 2008 R2 Standard,64位操作系统. RailsInstaller版本:2.2.4  (下载地址http://railsinsta ...

  2. soa服务治理-dubbo

    dubbo官网:http://dubbo.io/Home-zh.htm 学习点: 1.  日志的配置

  3. 【锋利的Jquery】读书笔记七

    第七章  jquery插件 管理cookie的插件--cookie jquery插件太多没什么好讲的,百度太多 说以下 cookie插件 <!DOCTYPE html> <html& ...

  4. Ubuntu 16.04 samba相关配置

    samba是 SMB/CIFS网络协议的重新实现,它作为NFS的补充使得在Linux和Windows系统之间进行文件共享.打印更容易实现. 相关介绍: SAMBA套件: (1)samba:这个套件主要 ...

  5. ORACLE 使用sqluldr2和sqlldr进行导入导出

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入. 简介: Sqluldr2 ...

  6. hdu1036

    #include<stdio.h>int main(){ int n; double d; int num; char h,m1,m2,s1,s2; scanf("%d" ...

  7. awk学习笔记二:调用shell、文件执行(转)

    awk 'BEGIN {print "Hello"}' 不操作文件直接处理数据流 要调用shell则可以用管道命令 如,打印日期awk 'BEGIN {"date&quo ...

  8. myeclipse启动服务器时,tomcat出错问题

    启动服务器,错误提示: Launching web on myeclipse tomcat has encountered a problem An internal error occurred d ...

  9. python字符串及正则表达式[转]

    原文链接:http://www.cnblogs.com/guojidong/archive/2012/12/20/2826388.html 字符串: 正则表达式 正则表达式元字符与语法图: 注意事项: ...

  10. 初始化git

    git config --global user.name "Firstname Lastname" git config --global user.email "yo ...