チーズ ()

問題

今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねずみは巣から出発して全てのチーズ工場を訪れチーズを 1 個ずつ食べる.

この町には,N 個のチーズ工場があり,どの工場も1種類のチーズだけを生産している.チーズの硬さは工場によって異なっており,硬さ 1 から N までのチーズを生産するチーズ工場がちょうど 1 つずつある.

ねずみの最初の体力は 1 であり,チーズを 1 個食べるごとに体力が 1 増える.ただし,ねずみは自分の体力よりも硬いチーズを食べることはできない.

ねずみは,東西南北に隣り合う区画に 1 分で移動することができるが,障害物の区画には入ることができない.チーズ工場をチーズを食べずに通り過ぎることもできる.すべてのチーズを食べ終えるまでにかかる最短時間を求めるプログラムを書け.ただし,ねずみがチーズを食べるのにかかる時間は無視できる.

入力

入力は H+1 行ある.1 行目には 3 つの整数 H,W,N (1 ≤ H ≤ 1000,1 ≤ W ≤ 1000,1 ≤ N ≤ 9) がこの順に空白で区切られて書かれている.2 行目から H+1 行目までの各行には,'S','1', '2', ..., '9','X','.' からなる W 文字の文字列が書かれており,各々が各区画の状態を表している.北から i 番目,西から j 番目の区画を (i,j) と記述することにすると (1 ≤ i ≤ H, 1 ≤ j ≤ W),第 i+1 行目の j 番目の文字は,区画 (i,j) が巣である場合は 'S' となり,障害物である場合は 'X' となり,空き地である場合は '.' となり,硬さ 1, 2, ..., 9 のチーズを生産する工場である場合はそれぞれ '1', '2', ..., '9' となる.入力には巣と硬さ 1, 2, ..., N のチーズを生産する工場がそれぞれ 1 つずつある.他のマスは障害物または空き地であることが保証されている.ねずみは全てのチーズを食べられることが保証されている.

出力

すべてのチーズを食べ終えるまでにかかる最短時間(分)を表す整数を 1 行で出力せよ.

大意输入行列,从S出发,然后走从1到n;输出最小步数;应该为bfs,把起点找到变为0,开始搜索

#include<stdio.h>
#include<queue>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int m,n;scanf("%d%d",&n,&m);int f[n+1][m];int t;scanf("%d",&t);char a[n+1][m+1];char b[n+1][m+1];char c;int x,y;int num=0;int i,j,k,l,h;scanf("%c",&c);for(i=0;i<n;i++){for(j=0;j<m;j++){scanf("%c",&a[i][j]);if(a[i][j]=='S')a[i][j]='0';x=i,y=j;}scanf("%c",&c);}for(int r=1;r<=t;r++){queue<int> s1;queue<int> s2;memset(f,0,sizeof(f));for(i=0;i<n;i++){for(j=0;j<m;j++){b[i][j]=a[i][j];if(a[i][j]-'0'==r-1){x=i,y=j;b[i][j]='X';}}}s1.push(x);s2.push(y);while(!s1.empty()){x=s1.front();y=s2.front();s1.pop();s2.pop();if(x+1<n){if(b[x+1][y]!='X'){s1.push(x+1);s2.push(y);f[x+1][y]=f[x][y]+1;if(b[x+1][y]-'0'==r){num+=f[x][y];num+=1;break;}b[x+1][y]='X';}}if(x-1>=0){if(b[x-1][y]!='X'){f[x-1][y]=f[x][y]+1;if(b[x-1][y]-'0'==r){num+=f[x][y];num+=1;break;}b[x-1][y]='X';s1.push(x-1);s2.push(y);}}if(y-1>=0){if(b[x][y-1]!='X'){if(b[x][y-1]-'0'==r){num+=f[x][y];num+=1;break;}b[x][y-1]='X';s1.push(x);s2.push(y-1);f[x][y-1]=f[x][y]+1;}}if(y+1<m){if(b[x][y+1]!='X'){if(b[x][y+1]-'0'==r){num+=f[x][y];num+=1;break;}b[x][y+1]='X';s1.push(x);s2.push(y+1);f[x][y+1]=f[x][y]+1;}}}}printf("%d\n",num);return 0;
}

aizu-0558 cheese相关推荐

  1. BFS:图的最短路径  Aizu - 0558 ​​​​​​​Cheese

    Cheese Aizu - 0558 大意:在H * W的地图上有N个奶酪工厂,每个工厂分别生产硬度为1-N的奶酪.有一只老鼠准备从出发点吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工 ...

  2. [Aizu]-0558 Cheese [BFS]

    問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねずみは巣から出発 ...

  3. Cheese Aizu - 0558题解

    チーズ () 問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねず ...

  4. BFS Aoj 0558 Cheese

    在 H×W 的地图上有 N 个奶酪工厂, 分别生产硬NN 的奶酪. 有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值, 初始时为 11, 每吃一个工厂的奶酪体力值增加 11(每个工 ...

  5. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  6. 专题一:简单搜索、深搜、广搜

    挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...

  7. Aizu - 0033 Ball

    这题书上写让用DFS--可是这一比较就出来啊-- Ball Aizu - 0033 図のように二股に分かれている容器があります.1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A か ...

  8. Codeforces Round #341 (Div. 2) D. Rat Kwesh and Cheese 数学

    D. Rat Kwesh and Cheese 题目连接: http://www.codeforces.com/contest/621/problem/D Description Wet Shark ...

  9. Exhaustive Search Aizu - ALDS1_5_A

    Write a program which reads a sequence A of n elements and an integer M, and outputs "yes" ...

  10. Allocation Aizu - ALDS1_4_D

    You are given n packages of wi kg from a belt conveyor in order (i=0,1,-n−1). You should load all pa ...

最新文章

  1. Android消息机制学习笔记
  2. python安装某些库失败的问题解决方案
  3. 【web安全】Xss Exploits and Defense翻译4
  4. php 检查图片重复度,php – 检测图片的“整体平均”颜色
  5. python接口 同花顺_利用python探索股票市场数据指南
  6. 时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone) -- IOS(实例)
  7. 如何让普通用户可以对DBA_SOURCE视图进行闪回查询?
  8. Kettle环境搭建及使用(数据迁移)
  9. mysql无法连接10061错误1067_解决MySQL启动的error 2003和1067 10061错误问题
  10. ASP.NET MVC 小小总结
  11. js return加分号_JS代码中加分号和不加分号的区别
  12. 【Musescore 】开源打谱软件 快速入门笔记
  13. 金色传说:SAP-PPDS-SAPAPO/RRP3增强:控制界面需求数量字段修改后检查增强/用户事件USERCOMMAND响应增强
  14. python matplotlib plt 画图总结
  15. php cache_expire,PHP session_cache_expire 会话函数
  16. excel文件中的多个工作表按名称排序
  17. windows远程桌面功能和粘贴拷贝功能
  18. 服务器怎么修改内存大小,服务器怎么改内存大小
  19. Bert-whitening 向量降维及使用
  20. SRT上传文件下载文件

热门文章

  1. 深度学习:GPU云服务器是如何租用的
  2. ai 如何导出html格式,Adobe Illustrator导出SVG的设置方法
  3. 精神小伙: 写代码是世界上最好的工作, 不接受反驳
  4. Waymo获得加州首个完全自动驾驶汽车许可证
  5. 【SpringBoot】SpringBoot配置文件
  6. 浅析SCI论文发表和转让
  7. 5月29号,Python列表
  8. 前端:给中国奥运金牌数做可视化
  9. CentOS联网问题(已解决)
  10. DEVOPS技术实践_04:Jenkins参数化构建