aizu-0558 cheese
チーズ ()
問題
今年も 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相关推荐
- BFS:图的最短路径 Aizu - 0558 Cheese
Cheese Aizu - 0558 大意:在H * W的地图上有N个奶酪工厂,每个工厂分别生产硬度为1-N的奶酪.有一只老鼠准备从出发点吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工 ...
- [Aizu]-0558 Cheese [BFS]
問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねずみは巣から出発 ...
- Cheese Aizu - 0558题解
チーズ () 問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に区画整理されていて,各区画は巣,チーズ工場,障害物,空き地のいずれかである.ねず ...
- BFS Aoj 0558 Cheese
在 H×W 的地图上有 N 个奶酪工厂, 分别生产硬NN 的奶酪. 有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值, 初始时为 11, 每吃一个工厂的奶酪体力值增加 11(每个工 ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- 专题一:简单搜索、深搜、广搜
挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...
- Aizu - 0033 Ball
这题书上写让用DFS--可是这一比较就出来啊-- Ball Aizu - 0033 図のように二股に分かれている容器があります.1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A か ...
- 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 ...
- Exhaustive Search Aizu - ALDS1_5_A
Write a program which reads a sequence A of n elements and an integer M, and outputs "yes" ...
- 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 ...
最新文章
- Android消息机制学习笔记
- python安装某些库失败的问题解决方案
- 【web安全】Xss Exploits and Defense翻译4
- php 检查图片重复度,php – 检测图片的“整体平均”颜色
- python接口 同花顺_利用python探索股票市场数据指南
- 时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone) -- IOS(实例)
- 如何让普通用户可以对DBA_SOURCE视图进行闪回查询?
- Kettle环境搭建及使用(数据迁移)
- mysql无法连接10061错误1067_解决MySQL启动的error 2003和1067 10061错误问题
- ASP.NET MVC 小小总结
- js return加分号_JS代码中加分号和不加分号的区别
- 【Musescore 】开源打谱软件 快速入门笔记
- 金色传说:SAP-PPDS-SAPAPO/RRP3增强:控制界面需求数量字段修改后检查增强/用户事件USERCOMMAND响应增强
- python matplotlib plt 画图总结
- php cache_expire,PHP session_cache_expire 会话函数
- excel文件中的多个工作表按名称排序
- windows远程桌面功能和粘贴拷贝功能
- 服务器怎么修改内存大小,服务器怎么改内存大小
- Bert-whitening 向量降维及使用
- SRT上传文件下载文件