博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P2196 挖地雷
阅读量:6086 次
发布时间:2019-06-20

本文共 1839 字,大约阅读时间需要 6 分钟。

题目背景

NOIp1996提高组第三题

题目描述

在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。

输入输出格式

输入格式:

 

输入文件mine.in有若干行。

第1行只有一个数字,表示地窖的个数N。

第2行有N个数,分别表示每个地窖中的地雷个数。

第3行至第N+1行表示地窖之间的连接情况:

第3行有n-1个数(0或1),表示第一个地窖至第2个、第3个、…、第n个地窖有否路径连接。如第3行为1 1 0 0 0 … 0,则表示第1个地窖至第2个地窖有路径,至第3个地窖有路径,至第4个地窖、第5个、…、第n个地窖没有路径。

第4行有n-2个数,表示第二个地窖至第3个、第4个、…、第n个地窖有否路径连接。

… …

第n+1行有1个数,表示第n-1个地窖至第n个地窖有否路径连接。(为0表示没有路径,为1表示有路径)。

 

输出格式:

 

输出文件wdl.out有两行数据。

第一行表示挖得最多地雷时的挖地雷的顺序,各地窖序号间以一个空格分隔,不得有多余的空格。

第二行只有一个数,表示能挖到的最多地雷数。

 

输入输出样例

输入样例#1:
510 8 4 7 61 1 1 00 0 01 11
输出样例#1:
1 3 4 527 最短路,跑n遍spfa,每次记录最长的路径的长度以及最长路径经过的点,我们判断我们记录的路径是否需要更新,如果需要更新(即判断当前路径是否为最长的),更新路径
#include
#include
#include
#include
#include
#define N 50using namespace std;bool vis[N];queue
q;int n,x,tot,ans,maxn,sum,e;int a[N],fa[N],pre[N],dis[N],head[N];int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct Edge{ int to,next,from;}edge[N];int add(int x,int y){ tot++; edge[tot].to=y; edge[tot].next=head[x]; head[x]=tot;}int spfa(int s){ memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); dis[s]=a[s]; q.push(s),vis[s]=true; while(!q.empty()) { int x=q.front(); q.pop();vis[x]=false; for(int i=head[x];i;i=edge[i].next) { int to=edge[i].to; if(dis[to]<=dis[x]+a[to]) { dis[to]=dis[x]+a[to]; fa[to]=x; if(vis[to]) continue; q.push(to),vis[to]=true; } } }}int main(){ n=read(); for(int i=1;i<=n;i++) a[i]=read(); for(int i=1;i
=1;i--) printf("%d ",pre[i]); printf("\n%d",ans); return 0; }

 

 

转载于:https://www.cnblogs.com/z360/p/7597866.html

你可能感兴趣的文章
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
Mysql利用binlog恢复数据
查看>>
我的友情链接
查看>>
用yum安装mariadb
查看>>
一点IT"边缘化"的人的思考
查看>>
WPF 降低.net framework到4.0
查看>>
搭建一个通用的脚手架
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>