基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
 收藏
 关注
给出一个无向图G的顶点V和边E。进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径。(两条路径不经过相同的边)

 
(注,无向图中不存在重边,也就是说确定起点和终点,他们之间最多只有1条路)
Input
  1. 1行:2个数M N,中间用空格分开,M是顶点的数量,N是边的数量。(2 <= M <= 25000, 1 <= N <= 50000)
  2. 2 - N + 1行,每行2个数,中间用空格分隔,分别是N条边的起点和终点的编号。例如2 4表示起点为2,终点为4,由于是无向图,所以从42也是可行的路径。
  3. + 2行,一个数Q,表示后面将进行Q次查询。(1 <= Q <= 50000)
  4. + 3 - N + 2 + Q行,每行2个数s, t,中间用空格分隔,表示查询的起点和终点。
Output
  1. Q行,如果从st存在2条不相交的路径则输出Yes,否则输出No
Input示例
  1. 4 4
  2. 1 2
  3. 2 3
  4. 1 3
  5. 1 4
  6. 5
  7. 1 2
  8. 2 3
  9. 3 1
  10. 2 4
  11. 1 4
Output示例
  1. Yes
  2. Yes
  3. Yes
  4. No
  5. No
相关问题
3条不相交的路径

1280
 
思路;
  裸tarjan;
 
 
来,上代码:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. #define maxn 250050
  7.  
  8. using namespace std;
  9.  
  10. struct EdgeType {
  11. int v,e;
  12. };
  13. struct EdgeType edge[maxn<<];
  14.  
  15. int n,m,dfn[maxn],low[maxn],tarjan_dfn;
  16. int head[maxn],cnt,stack[maxn],top;
  17. int bel[maxn],loop;
  18.  
  19. char Cget;
  20.  
  21. inline void in(int &now)
  22. {
  23. now=,Cget=getchar();
  24. while(Cget>''||Cget<'') Cget=getchar();
  25. while(Cget>=''&&Cget<='')
  26. {
  27. now=now*+Cget-'';
  28. Cget=getchar();
  29. }
  30. }
  31.  
  32. void tarjan(int now,int fa)
  33. {
  34. dfn[now]=++tarjan_dfn,low[now]=dfn[now];
  35. stack[++top]=now;
  36. for(int i=head[now];i;i=edge[i].e)
  37. {
  38. if(fa==edge[i].v) continue;
  39. if(!dfn[edge[i].v]) tarjan(edge[i].v,now);
  40. low[now]=min(low[now],low[edge[i].v]);
  41. }
  42. if(low[now]==dfn[now])
  43. {
  44. loop++;
  45. while(stack[top]!=now)
  46. {
  47. bel[stack[top]]=loop;
  48. top--;
  49. }
  50. bel[stack[top--]]=loop;
  51. }
  52. }
  53.  
  54. int main()
  55. {
  56. in(n),in(m);
  57. int u,v;
  58. while(m--)
  59. {
  60. in(u),in(v);
  61. edge[++cnt].v=v,edge[cnt].e=head[u],head[u]=cnt;
  62. edge[++cnt].v=u,edge[cnt].e=head[v],head[v]=cnt;
  63. }
  64. for(int i=;i<=n;i++) if(!dfn[i]) tarjan(i,);
  65. in(m);
  66. while(m--)
  67. {
  68. in(u),in(v);
  69. if(bel[u]==bel[v]) puts("Yes");
  70. else puts("No");
  71. }
  72. return ;
  73. }

AC日记——2条不相交的路径 51nod 1076的更多相关文章

  1. 51nod 1076 2条不相交的路径

    给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径.(两条路径不经过相同的边)   (注,无向图中不存在重边,也就是说确定起点和终点 ...

  2. 51nod 1076 2条不相交的路径(边双连通分量)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1076 题意: 思路: 边双连通分量,跑一遍存储一下即可. #includ ...

  3. Codeforces Round #14 D. Two Paths(求树上两条不相交的路径的乘积最大值)

    题目链接:  http://codeforces.com/problemset/problem/14/D 思路:直接枚举每一天路径的两端,然后求以每一端为树根的树上最长路径,然后相乘就可以了. # ...

  4. 51Nod--1076 2条不相交的路径(强连通分量)

    电波 #include<bits/stdc++.h> using namespace std; #define LL long long #define maxn 30000 vector ...

  5. AC日记——3的幂的和 51nod 1013

    3的幂的和 思路: 矩阵快速幂:   sn-1      3 1        sn   *          = 1     0 1  1 来,上代码: #include <cstdio> ...

  6. AC日记——第K大的数 51nod 1105

    1105 第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 数组A和数组B,里面都有n个整数.数组C共有n^2个整数,分别是A[0] * ...

  7. LGV - 求多条不相交路径的方案数

    推荐博客 :https://blog.csdn.net/qq_25576697/article/details/81138213 链接:https://www.nowcoder.com/acm/con ...

  8. AC日记——codevs1688求逆序对

    AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...

  9. 不同路径II(一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。)

    示例 1: 输入: [   [0,0,0],   [0,1,0],   [0,0,0] ] 输出: 2 解释: 3x3 网格的正中间有一个障碍物. 从左上角到右下角一共有 2 条不同的路径: 1. 向 ...

随机推荐

  1. k8s的高级调度方式

    默认的scheduler的调度过程:1.预选策略:从所有节点当中选择基本符合选择条件的节点.2.优选函数:在众多符合基本条件的节点中使用优选函数,计算节点各自的得分,通过比较进行排序.3.从最高得分的 ...

  2. 标准C++(4)继承

    一.继承的作用 若A类继承了B类,可以使A类获得B类中的部分成员变量和成员函数,这能使程序员在已有类的基础上重新定义新的类.继承是类的重要特性,当A类继承了B类,我们称A类为派生类或子类,B类为基类或 ...

  3. Linux基础学习-用户的创建修改删除

    用户添加修改删除 1 useradd添加用户 添加一个新用户hehe,指定uid为3000,家目录为/home/haha [root@qdlinux ~]# useradd -u 3000 -d /h ...

  4. NodeJS基础入门-Buffer

    Buffer.byteLength console.log(Buffer.byteLength('test')); console.log(Buffer.byteLength('我是C语言爱好者')) ...

  5. python入门:输出1-10以内除去7的所有数(自写)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10以内除去7的所有数(自写) """ 变量kaishi赋值等于1,w ...

  6. Linux远程传输命令scp

    指令:scp在不同的linux主机间复制文件带有Security的文件copy,基于ssh登录. 有些linux发行版没有自带scp,因此需要安装scp# yum -y install openssh ...

  7. kafka的初认识

    学习地址: http://www.jikexueyuan.com/course/1716_3.html?ss=1 http://www.jikexueyuan.com/course/kafka/ zo ...

  8. python学习博客推荐

    https://www.liaoxuefeng.com/

  9. zoj 4056

    At 0 second, the LED light is initially off. After BaoBao presses the button 2 times, the LED light ...

  10. 持续化集成Jenkins的系统配置

    最近在研究selenium2自动化测试,用到持续化集成jenkins.由于之前仅限于使用,而没有真正动手配置过,所以现在学习从零开始,搭建持续化集成,故而有了这篇博客. 先介绍一下项目持续集成测试,这 ...