题目地址

转化为图论问题

对于每个交叉点(X,Y)抽象成节点。与它相邻的四个点中,可以直接连线的边权为0,否则边权为1。

用死了的SPFA解决图论问题。

#include <cstring>
#include <cstdio>
#define GC getchar()
#define Clean(X,K) memset(X,K,sizeof(X))
#define re register
#define Hash(X,Y) ((X)*(M+1)+(Y))
using namespace std ;
int Qread () {
int X = ;
char C = GC ;
while (C > '' || C < '') C = GC ;
while (C >='' && C <='') {
X = X * + C - '' ;
C = GC ;
}
return X ;
}
const int Maxn = , INF = ;
int Times , N , M , Head[Maxn * Maxn] , En = , Q[Maxn * Maxn] , Mdis[Maxn * Maxn], Vis[Maxn * Maxn];
struct Edge {
int From , Goto , NextEdge , Len ;
};
Edge E[Maxn * Maxn * ] ;
void Adg (int X , int Y ,int L) {
E[++En].From = X ;
E[En].Goto = Y ;
E[En].Len = L ;
E[En].NextEdge = Head[X] ;
Head[X] = En ;
}
int SPFA () {
re int H = , T = ;
Clean(Vis , ) , Clean(Mdis , 0x3f) ;
const int St = Hash( , ) , Top = (N + ) * (M + );
if (++T > Top) T = ;
Q[T] = St , Mdis[St] = , Vis[St] = ;
while (H != T) {
if (++ H > Top) H = ;
const int Now = Q[H] ;
Vis[Now] = ;
for (re int i = Head[Now ] ; i ; i = E[i].NextEdge ) {
int Dis = Mdis[Now] + E[i].Len ;
if (Dis < Mdis[E[i].Goto ]) {
Mdis[E[i].Goto ] = Dis ;
if (!Vis[E[i].Goto ]) {
Vis[E[i].Goto ] = ;
if (++ T > Top) T = ;
Q[T] = E[i].Goto ;
}
}
}
}
return Mdis[Hash(N , M)] ;
}
int main () {
//freopen ("P2243.in" , "r" , stdin) ;
Times = Qread () ;
while (Times -- ) {
N = Qread () , M = Qread () ;
Clean (Head , ) , En = ;
for (re int i = ; i < N ; ++ i) {
for (re int j = ; j < M; ++ j) {
char C = GC ;
while (C !='\\' && C !='/') C = GC ;
if (C == '/') {
Adg (Hash(i + , j + ) , Hash (i , j) , ) ;
Adg (Hash (i , j) ,Hash(i + , j + ) , ) ;
Adg (Hash(i + , j) , Hash (i , j + ) , ) ;
Adg (Hash (i , j + ) ,Hash(i + , j) , ) ;
} else if (C == '\\') {
Adg (Hash(i + , j + ) , Hash (i , j) , ) ;
Adg (Hash (i , j) ,Hash(i + , j + ) , ) ;
Adg (Hash(i + , j) , Hash (i , j + ) , ) ;
Adg (Hash (i , j + ) ,Hash(i + , j) , ) ;
}
}
}
int Ans = SPFA() ;
if (Ans < INF)printf ("%d\n" , Ans) ;
else printf ("NO SOLUTION\n") ;
}
fclose (stdin) , fclose (stdout) ;
return ;
}

洛谷P2243 电路维修的更多相关文章

  1. 洛谷 P2243 电路维修

    P2243 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...

  2. 洛谷P2243 电路维修 [最短路]

    题目传送门 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...

  3. 【Dijkstra堆优化】洛谷P2243电路维修

    题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和James,可是一直也没能给 ...

  4. 洛谷P2242 公路维修问题

    To 洛谷.2242 公路维修问题 题目描述 由于长期没有得到维修,A国的高速公路上出现了N个坑.为了尽快填补好这N个坑,A国决定对M处地段采取交通管制.为了求解方便,假设A国的高速公路只有一条,而且 ...

  5. P2243 电路维修

    P2243 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...

  6. 洛谷 P2242 公路维修问题

    P2242 公路维修问题 题目描述 由于长期没有得到维修,A国的高速公路上出现了N个坑.为了尽快填补好这N个坑,A国决定对M处地段采取交通管制.为了求解方便,假设A国的高速公路只有一条,而且是笔直的. ...

  7. 洛谷P2242 公路维修问题(Road)

    题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...

  8. Luogu P2243 电路维修 双端队列BFS

    当转移的代价是0和一个分明不同的权值时,可以用双端队列BFS去跑(你跑最短路也没问题..QWQ) 而对于这道题,边旋转代价是1,不旋转代价是0:可以直接建图最短路,也可以跑BFS 这个题建图很有意思: ...

  9. 洛谷 P2317 [HNOI2005]星际贸易 解题报告

    P2317 [HNOI2005]星际贸易 题目描述 输入输出格式 输入格式: 输出格式: 如果可以找到这样的方案,那么输出文件output.txt中包含两个整数X和Y.X表示贸易额,Y表示净利润并且两 ...

随机推荐

  1. spring boot 统一异常处理

    需求源自于任何一个业务的编写总会有各种各样的条件判断,需要时时手动抛出异常,又希望让接口返回友好的错误信息. spring boot提供的帮助是自动将异常重定向到路由为/error的控制器 但是我们又 ...

  2. Java开发知识之Java中的集合Set接口以及子类应用

    ---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...

  3. springmvc 项目完整示例03 小结

    利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...

  4. webpack4.0各个击破(8)—— tapable篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  5. Odd-e CSD Course Day 1

    First 強烈的建議,記得準備好當地的 SIM 卡及插座轉接頭,在這五天中很好用的 接下來,我就各個主題來介紹一下相關的心得.首先我們這五天裡會依照 Scrum 的流程,完全的跑過一次,從一開始的需 ...

  6. MySQL 笔记整理(4) --深入浅出索引(上)

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 4) --深入浅出索引(上) 一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样. 索引的常见模型 哈希表: ...

  7. Java Pom.xml 详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 消息队列_MSMQ(2)简单应用

    上一篇讲了MSMQ的简单知识,那这次我们讲下简单代码的知识 附上源码: https://gitee.com/592576605/MSMQ_HANS 下面是简单的类库说明,具体咋用就看源码吧 类(Cla ...

  9. Linux基础学习(全)

    使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...

  10. Dynamics AX 2012 R2 电子邮件广播错误 0x80040213

    Dynamics AX 2012 R2 电子邮件广播错误 0x80040213 今天Reinhard在新环境做邮件广播测试时,发现无法发送邮件,并报以下错误: 类"CDO.Message&q ...