计蒜客 T1595 迷宫(一)

这篇博客介绍了一种将图的深度优先搜索(DFS)和广度优先搜索(BFS)结合的方法,通过转化为网络流问题并利用Dinic算法来解决。代码示例展示了如何在给定的二维矩阵中,从起点'S'到终点'T'是否存在路径,通过建立流量为1的边并检查最终流量来得出结论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:点击跳转
这题dfs和bfs都可以解决,这里就结合一下,把问题转化为网络流,用dinic算法解决。
对于每个非*的点,都向四周所能到达的地方建一条流量为1的边,如果最后T点有流量能到达,则说明S能到达T点。
代码如下:

#include<bits/stdc++.h>

using namespace std;
typedef unsigned long long ll;
const int MAXN = 5e3 + 5e2;
const int INF = 0x3f3f3f3f;
#define endl '\n'

inline void IO_STREAM() {
   
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
}

struct Edge{
   
    int to,val,nxt;
}e[MAXN];

int head[MAXN], deep[MAXN], to[4][2] = {
   1, 0, -1, 0, 0, 1, 0, -1};
int n, m, s, t, cnt;
ll res;
char gra[25][25];

inline void init() {
   
    memset(head, -1, sizeof(head)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值