首页 > 其他分享 >在基环树上 判断一个点到另外一个点的路径是不是大于2

在基环树上 判断一个点到另外一个点的路径是不是大于2

时间:2022-08-29 13:35:06浏览次数:53  
标签:基环 一个点 idx fa int 路径 ++ add

树:n点 n-1边
基环树:n点 n以上边

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5, M = N*2;
int n, q;
int h[N], e[M], ne[M], idx;
int fa[N], d[N];

void add (int a, int b) {
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}

void topsort () {
    queue <int> q;
    for (int i = 1; i <= n; i++) {
        if (d[i] == 1)  q.push (i);
    }

    while (!q.empty()) {
        int t = q.front();
        q.pop ();
        fa[t] = -1; //无环 因为度数为1

        for (int i = h[t]; ~i; i = ne[i]) {
            int j = e[i];
            if (--d[j] == 1)    q.push (j);
        }
    }
}

void dfs (int u, int v) {
    fa[u] = v;
    for (int i = h[u]; ~i; i = ne[i]) {
        int j = e[i];
        if (fa[j] == -1)    dfs (j, v);//如果是不在环上的点 就把一条链上的点都设置为在环上的点
    }
}

int main () {
    memset (h, -1, sizeof h);
    cin >> n;

    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        add (a, b), add (b, a);
        d[a] ++, d[b] ++;
    }

    //topsort找环 不在环上会标记成-1
    topsort ();
    for (int i = 1; i <= n; i++) {
        if (fa[i] == 0) dfs (i, i);//剩下的就是在环上的了
    }

    cin >> q;
    while (q --) {
        int u, v;
        cin >> u >> v;
        if (fa[u] == fa[v])     cout << "Yes\n";
        else    cout << "No\n";
    }
}


//dfs合并到环上


标签:基环,一个点,idx,fa,int,路径,++,add
From: https://www.cnblogs.com/liang302/p/16635629.html

相关文章

  • cmake find_package路径详解
    Motivation经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动......
  • realpath函数,返回规范化的绝对路径名
    PHP中的realpath()函数是一个内置函数,用于返回规范化的绝对​​路径名。小编主要用于linux与window下路径问题的处理.之前小编本地的w11,程序运行的好好的.上传到服务器上......
  • LeetCode — 最小路径和
    LeetCode—最小路径和问题陈述给定一个mxn网格用非负数填充,找到一条从左上角到右下角的路径,该路径最小化沿其路径的所有数字的总和。笔记:您只能在任何时间点向下或......
  • 部署web服务器时虚拟路径的问题-什么是虚拟路径?有什么用?
    https://blog.csdn.net/sunjintaoxxx/article/details/119778776https://zhidao.baidu.com/question/11331085.html 当使用Dreamweaver将文件上传到远程服务器后,这些......
  • 英文环境下,外部文件诡异的路径问题
    做海外版软件的的时候,遇到了一个诡异的问题,外部文件双击打开的时候跳转到软件通过StartupArgs拿到的路径很诡异,本来是“C:\Users\t25220\Documents\WhiteboardFile\90.mgb......
  • After Effects 教程,如何在 After Effects 中使对象沿路径移动?
    欢迎观看AfterEffects教程,小编带大家学习AfterEffects的基本工具和使用技巧,了解如何在AE中使对象沿路径移动。将「当前时间指示器」移动到「时间轴」中「0;00;01;......
  • After Effects 教程,如何在 After Effects 中创建路径?
    欢迎观看AfterEffects中文版教程,小编带大家学习aftereffects软件安装的基本工具和使用技巧,了解如何在AE中创建路径。创建一条沿着这条道路的路径,在「时间轴」中选择......
  • 剑指 Offer II 112. 最长递增路径-----记忆化搜索
    题目表述给定一个 mxn整数矩阵 matrix,找出其中最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。不能在对角线方向上移动或移动到边界外(......
  • SpringMVC 使用注解时路径找不到
    SpringMVC注解路径找不到今天在使用SpringMVC时偶然遇到了跳转404的问题,于是决定记录下来启动后输入@RequestMapping("/login")注解里的login后跳转404可能问题:spr......
  • 360°解码!业内首份未来企业成长路径白皮书下载
    经历了信息化、数字化时代,中国企业伴随着产业外部环境和内部挑战的不断变化迈入数智化时代。与此同时,数智技术迭代创新,云计算、大数据、人工智能、机器学习等新技术正在加......