L3-004. 肿瘤诊断
L3-004. 肿瘤诊断
题目链接:https://www.patest.cn/contests/gplt/L3-004
BFS
之前尝试使用递归dfs,提交后发现有两个段错误,发现递归层数太多,然后改用bfs解决。
代码如下:
#include<cstdio>
#include<stack>
#define N 505
#define MAX 5000
using namespace std;
int n,m,s,d;
int pro[N];
int Map[N][N];
bool mark[N];
int sum[N];
int path[N];
int Distance[N];
int person[N];
int i,j;
stack<int>st;
int main(void){
freopen("in.txt","r",stdin);
scanf("%d%d%d%d",&n,&m,&s,&d);
for(i=;i<n;++i)scanf("%d",&pro[i]);
for(i=;i<n;++i)
for(j=;j<n;++j)Map[i][j]=MAX;
while(m--){
int len;
scanf("%d%d%d",&i,&j,&len);
if(Map[i][j]>len)Map[i][j]=Map[j][i]=len;
}
for(i=;i<n;++i){
Distance[i]=MAX;
sum[i]=;
person[i]=pro[s];
if(Map[s][i]<MAX){
Distance[i]=Map[s][i];
path[i]=s;
person[i]+=pro[i];
}
}
mark[s]=,Distance[s]=;
while(){
int k,m=MAX;
for(i=;i<n;++i){
if(!mark[i]&&m>Distance[i]){
m=Distance[i];
k=i;
}
}
if(m==MAX)break;
mark[k]=;
for(i=;i<n;++i){
if(!mark[i]){
if(Distance[i]>Distance[k]+Map[k][i]){
Distance[i]=Distance[k]+Map[k][i];
person[i]=person[k]+pro[i];
path[i]=k;
sum[i]=sum[k];/**not 1**/
}else if(Distance[i]==Distance[k]+Map[k][i]){
sum[i]+=sum[k];/**not ++**/
if(person[i]<person[k]+pro[i]){
person[i]=person[k]+pro[i];
path[i]=k;
}
}
}
}
}
int temp=pro[d];
int k=d;
while(k!=s){
st.push(k);
k=path[k];
temp+=pro[k];
}
printf("%d %d\n",sum[d],temp);
printf("%d",s);
while(!st.empty()){
printf(" %d",st.top());
st.pop();
}
printf("\n");
return ;
}
L3-004. 肿瘤诊断的更多相关文章
- pat 甲级 团体天梯 L3-004. 肿瘤诊断
L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...
- PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)
L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...
- 【经典/基础BFS+略微复杂的题意】PAT-L3-004. 肿瘤诊断
L3-004. 肿瘤诊断 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是 ...
- L3-004 肿瘤诊断 dfs bfs
在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...
- PAT L3-004 肿瘤诊断(三维广搜)
在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...
- PAT天梯赛L3-004 肿瘤诊断
题目链接:点击打开链接 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每 ...
- 团体程序设计天梯赛 L3-004. 肿瘤诊断
数组的大小不能开太大,否则会出现段错误 用bfs而不用dfs,dfs存储太多中间过程,会超内存 #include <stdio.h> #include <stdlib.h> # ...
- PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS
题目分析: 可能是我的理解能力比较差,在读题的时候一直以为所有的切片是可以排列组合的,并不是按照输入顺序就定死的,那么这题就变得十分的复杂啦~~~~~,查看的题解之后发现所有的切片并没有所谓的自由组合 ...
- PTA刷题笔记
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...
随机推荐
- ssm框架中css被拦截
最近用springmvc spring mybatis框架写程序,请求成功并获得数据,唯独css样式不能加载,但路径正确,css文件编码也是utf-8,用火狐debug总是显示未请求到(都快怀疑自己写 ...
- Idea高级用法
一.快速打开Action: Ctrl+Shift+A 列表中会列出所有的action,对应于idea的各种操作,例如: 输入backgroud,可以为编辑器设置背景 输入restclient,可以打开 ...
- C# 动态对象(dynamic)的用法
说到正确用法,那么首先应该指出一个错误用法: 常有人会拿var这个关键字来和dynamic做比较.实际上,var和dynamic完全是两个概念,根本不应该放在一起做比较.var实际上是编译期抛给我们的 ...
- UVAlive 6833 Miscalculation 字符串处理
去年省选的题 因为卡了这道题再加上队友占机时 省选第一天华丽爆零了 用事实证明了1+1+1<1的事实 毕竟下半年单挑了东北赛名额 省赛打不出来名额就真的就不怪我了(摔 现在有拿出来做 长个记性 ...
- HDU 1724 Ellipse 自适应simpson积分
simpson公式是用于积分求解的比较简单的方法(有模板都简单…… 下面是simpson公式(很明显 这个公式的证明我并不会…… (盗图…… 因为一段函数基本不可能很规则 所以我们要用自适应积分的方法 ...
- B+树概念学习
转载自 从B树.B+树.B*树谈到R 树 1.用阶定义的B树 B 树又叫平衡多路查找树.一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R* ...
- Java 不使用科学计数法表示数据设置
java.text.NumberFormat nf = java.text.NumberFormat.getInstance(); nf.setGroupingUsed(false); nf.form ...
- cdh 安装记录
安装文件准备 CDH 下载地址:http://archive.cloudera.com/cdh5/parcels/latest/ 下载操作系统对应的版本: 1.CDH-5.3.0-1.cdh5.3.0 ...
- java输出菱形
package test; public class Test { public static void main(String[] args) { for(int i=1;i<=4;i++){ ...
- WPF中自定义绘制内容
先说结论:实现了在自定义大小的窗口中,加载图片,并在图片上绘制一个矩形框:且在窗口大小改变的情况,保持绘制的矩形框与图片的先对位置不变. 在WinForm中,我们可以很方便地绘制自己需要的内容,在WP ...