P8604 [蓝桥杯 2013 国 C] 危险系数 题解

题意:给定一张无向图和点 s,t,求有多少个点 x 使得删去点 xs,t 不连通。

思路

观察到 n,m 很小,考虑暴力做法。

枚举每个点作为 xO(n+m) 跑一遍 BFS 验证不经过 xs,t 是否连通。

BFS 时避免扩展点 x 即可保证 st 的路径不经过 x

#include <queue>
#include <cstdio>
using namespace std;
struct E{int v, t;}e[4050];queue<int> q;
int n, m, u, v, s, t, p, c, h[1050];bool d[1050];
void A(int u, int v) {e[++c] = {v, h[u]};h[u] = c;}
bool F(int x)
{
    for(int i = 1;i <= n;++i) d[i] = 1;
    d[s] = 0;q.push(s);while(!q.empty())
    {
        int u = q.front();q.pop();if(u != x)
        for(int i = h[u], v;i;i = e[i].t) if
        (d[v = e[i].v]) d[v] = 0, q.push(v);
    }
    return d[t];
}
int main()
{
    scanf("%d%d", &n, &m);while(m--) scanf
    ("%d%d", &u, &v), A(u, v), A(v, u);scanf
    ("%d%d", &s, &t);if(F(0)) return puts("-1")
    , 0;for(int i = 1;i <= n;++i) p += i != s
    && i != t && F(i);return printf("%d", p), 0;
}
posted @   Jijidawang  阅读(37)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示