问题 A: 电路维修

时间限制: 1 Sec  内存限制: 128 MB
提交: 16  解决: 7
[提交][状态][讨论版][命题人:add_shengjunjie][Edit] [TestData]

题目链接:http://acm.ocrosoft.com/problem.php?cid=1694&pid=0

题目描述

Ha’nyu是来自异世界的魔女,她在漫无目的的四处漂流的时候,遇到了善良的少女Rika,从而被收留在地球上。Rika家里有一辆飞行车。有一天飞行车的电路板突然出现了故障,导致无法正常启动。

电路板的整体结构是一个R行C列的网格,如图所示。每一个格点都是电线的接点。每个格子都包含一个电子元件。电子元件的主要部分是一个可旋转的,连接一条对角线上的两个连接点的短电缆。在旋转之后,它就可以连接另一条对角线的两个接点。电路板左上角的接点接入直流电源,右下角的接点接入飞行车的发动装置。

Ha‘nyu发现因为某些元件的方向不小心发生了改变,电路板可能处于断路状态。她准备通过计算,旋转最少数量的元件,使电源与发动装置通过若干条短电缆相连。不过电路的规模实在太大了,Ha‘nyu不擅长编程,希望你能够帮她解决这个问题。

输入

输入文件包含多组测试数据。第一行包含一个整数T 表示测试数据的数目。
  对于每组测试数据,第一行包含正整数 R 和C,表示电路板的行数和列数。
  之后 R 行,每行C 个字符,字符是"/"和"\"中的一个,表示标准件的方向。
  对于 100% 的数据,R,C≤500,T≤5。

输出

对于每组测试数据,在单独的一行输出一个正整数,表示所需的缩小旋转次数。
  如果无论怎样都不能使得电源和发动机之间连通,输出 NO SOLUTION。

样例输入

1
3 5
\\/\\
\\///
/\\\\

样例输出

1

思路:二维数组不好建地图,所以用邻接表去建图,化二维地图用一维去存,利用权值为0的不可叠加性,用双端队列去BFS。

代码:

#include<bits/stdc++.h>using namespace std;#define maxn 1000#define INF 0x3f3f3f3fint n, m;char tt[maxn][maxn];//存地图int dis[maxn*maxn];int ans = INF;struct edge{int e, w;//终点和路程edge(int _e, int _w)//构造函数初始化{e = _e;w = _w;}};vector<edge>Map[maxn*maxn];//建邻接表void add_edge(int x, int y, int z){Map[x].push_back(edge(y, z));}int bfs(int s, int t){for (int i = 0; i < maxn*maxn; i++)dis[i] = INF;//双端队列BFSdeque<int>p;p.push_back(s);dis[s] = 0;while (!p.empty()){int Now = p.back();p.pop_back();if (Now == t) return dis[Now];for (int i = Map[Now].size() - 1; i >= 0; i--){int u = Map[Now][i].e, c = Map[Now][i].w;if (dis[u] > dis[Now] + c){dis[u] = dis[Now] + c;if (c == 0)p.push_back(u);//若边权为0放在后面elsep.push_front(u);//若边权为1放在前面}}}return dis[t];}int main(){int T;cin >> T;while (T--){ans = INF;for (int i = 0; i <= maxn * maxn; i++)Map[i].clear();//邻接表清空cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> tt[i][j];}}//zuofor (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){add_edge((i - 1)*(m + 1) + j, i*(m + 1) + j - 1, tt[i][j] != '/');//将二维图转化为一维图add_edge(i*(m + 1) + j - 1, (i - 1)*(m + 1) + j, tt[i][j] != '/');add_edge((i - 1)*(m + 1) + j - 1, i*(m + 1) + j, tt[i][j] == '/');add_edge(i*(m + 1) + j, (i - 1)*(m + 1) + j - 1, tt[i][j] == '/');}}ans = bfs(0, n*(m + 1) + m);if (ans == INF)cout << "NO SOLUTION" << endl;else cout << ans << endl;}}

问题 A: 电路维修相关推荐

  1. 电路维修知识-可控硅

    电路维修记录 一.可控硅基础知识 二.维修检测 一.可控硅基础知识 可控硅又叫晶闸管,是一种常用的半导体器件,是一种能像闸门一样控制电流的大小元器件.因此,可控硅也具有开关控制电压调整和整流等功能. ...

  2. 电路维修知识-电阻器

    电路维修知识-电阻器 1.电阻器的功能.分类和电路符号 1.1电阻器的功能 1.2电阻器的符号 1.3电阻器的分类 2.电阻器的参数与标识 2.1电阻器的参数 2.2电阻器的标识 3.电阻器常见故障判 ...

  3. 洛谷 T282123 电路维修

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 T282123 电路维修 题目 题目背景 达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女 翰翰,从而被收留在地 ...

  4. 货车定位服务器维修要多久,卡车电路维修需要注意的维修技巧,你知道多少?...

    随着电喷发动机的日渐增多,在日常车辆维修过程中,经常会进行电路方面的维修操作,例如维修电器设备.更换蓄电池.车辆长期闲置不用.车身焊接等.但是这些看似简单的事情,如果操作不当可能会导致车辆的二次损伤. ...

  5. 如何学好电子电路维修技术

    热爱维修的朋友们,我们欢迎您.这里为您提供学习的平台,常来坐坐,相互交流.探讨:一起学习.一起进步--<?xml:namespace prefix = o ns = "urn:sche ...

  6. 计算机要学电路,想学电路的师傅可以看看挖掘机电脑板电路维修需要的常用设备——欢迎转载学习...

    目前主流挖掘机上各部的控制系统都已采用电子控制.如发动机燃油喷射.油门电机.液压泵流量控制等等.这些控制中心俗称电脑.目前很多修配厂的技术水平同前些年相比都有很大的提高,对于电脑的故障判断都比较准确, ...

  7. 电路维修 -> 双端队列 BFS

    [问题描述] Elf是来自Gliese星球的少女,她有一辆飞行车.飞行车电路板的整体结构是一个R行C列的网格(R,C≤500),网格的交点都是电路板的接点,每个格子都包含一个电子元件.电子元件的主要部 ...

  8. 电路维修AcWing

    12231达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上. 翰翰的家里有一辆飞行车. 有一天飞行车的电路板突然出现了故障,导致无法启动. 电路板的整体结 ...

  9. 算法提高课-搜索-双端队列广搜-AcWing 175. 电路维修:deque、bfs、有点难

    题目分析 来源:acwing 只有边权为0和边权为1,两种情况.什么意思呢?两个点之间存在路径则边权为0,需要转一下连通的边权为1. 每个点可能入队多次,本质上是个dijkstra算法. 下图说明bf ...

最新文章

  1. rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象
  2. 《实现领域驱动设计》读书笔记
  3. NS2仿真分析无线网络的攻击防御(2)
  4. hive能替代oracle_Hive与Oracle表关联语句对比
  5. linux shell切割脚本,自动分割日志bash shell脚本
  6. Hackme.inndy - Onepunch
  7. java实践体会,java实践心得体会范文3篇
  8. 吴恩达机器学习课程笔记
  9. VMware GSX Server 3.2.1 Build 19281免费下载
  10. 领域驱动设计核心概念
  11. C语言读取文件所有内容
  12. 非对称密码之DH密钥交换算法
  13. 香港云服务器哪家便宜好用?
  14. 微信小程序输出Object,Object
  15. filebeat重复采集数据问题排查
  16. 自称菜鸟的二本大龄程序员居然拿到百度offer,还有嘉实offer(百度三面面经)
  17. php内容管理系统 admini,BageCMS 开源网站内容管理系统 php版下载_BageCMS 开源网站内容管理系统 php版官方下载-太平洋下载中心...
  18. php手机座机验证,JS校验手机号 座机 邮箱 微信号
  19. java用JBarcode组件生成条形码(支持自定义字体及颜色)
  20. php中长轮询,PHP完成长轮询【代码示例】_后端开发

热门文章

  1. 基础编程题目集 函数题部分
  2. 数据来源渠道及采集工具_报表工具不可或缺的数据填报功能-----数据采集数据补录工具...
  3. 004-实现过滤PCHunter驱动中的例程
  4. 个人QQ免签,实现QQ收款
  5. Layui-颜色选择器
  6. ftp中转服务器,Serv-U FTP文件服务器组建攻略
  7. 基于matlab的16qam系统,基于MATLAB的16QAM通信系统的仿真精选.doc
  8. 清迈中文离线地图App上线
  9. ArcGIS栅格转面失败 所转面为空 显示原栅格范围有问题
  10. 利用现代技术研发的人工智能