题目链接:传送门

思路:求A到B之间必要的中间节点

条件:(1)只有一条路径经过中间节点;(low[B]>=num[u]&&num[v]<=num[B],没有从B到u的路径)

(2)中间节点不能和A,B重合(u!=A&&num[v]<=num[B],先v后B)

(3)中间节点一定是割点(num[u]<=low[v])

然后就是Tarjan的模板了。

参考文章:传送门

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = ;
int num[maxn],vis[maxn],low[maxn],tim,A,B,ans;
vector <int> vc[maxn];
void Init()
{
memset(num,,sizeof(num));
memset(vis,,sizeof(vis));
memset(low,,sizeof(low));
tim=;ans=;
}
void Tarjan(int u,int pre)
{
num[u]=low[u]=++tim;
int i,v;
for(i=;i<vc[u].size();i++){
v=vc[u][i];
if(!num[v]){
Tarjan(v,u);
low[u]=min(low[u],low[v]);
if(u!=A&&num[u]<=low[v]&&num[v]<=num[B]&&low[B]>=num[u]) ans=min(ans,u);
}
else if(pre!=v) low[u]=min(low[u],num[v]);
}
}
int main(void)
{
int n,m,i,j,x,y;
while(~scanf("%d",&n)){
Init();
while(scanf("%d%d",&x,&y)&&(x+y)){
vc[x].push_back(y);
vc[y].push_back(x);
}
scanf("%d%d",&A,&B);
Tarjan(A,-);
if(ans<=n) printf("%d\n",ans);
else printf("No solution\n");
}
return ;
}

LOJ-10102(求A到B之间的割点)的更多相关文章

  1. js 求两个日期之间相差天数

    //求两个日期之间的相差天数 function daysBetween(DateOne, DateTwo) { var OneMonth = DateOne.substring(5, DateOne. ...

  2. 求n到m之间素数的个数

    Description 求n到m之间素数的个数 Input 多组测试数据,每组先输入一个整数t,表示组数,然后每组输入2个正整数n和m,(1 <= n <= m <= 10000) ...

  3. PHP 求两个日期之间相差的天数、月数

    <?php /** * 求两个日期之间相差的天数 * (针对1970年1月1日之后,求之前可以采用泰勒公式) * @param string $day1 * @param string $day ...

  4. Frogger POJ - 2253(求两个石头之间”所有通路中最长边中“的最小边)

    题意 ​ 题目主要说的是,有两只青蛙,在两个石头上,他们之间也有一些石头,一只青蛙要想到达另一只青蛙所在地方,必须跳在石头上.题目中给出了两只青蛙的初始位置,以及剩余石头的位置,问一只青蛙到达另一只青 ...

  5. Python实现求多个集合之间的并集

    目的:求多个集合之前的并集,例如:现有四个集合C1 = {11, 22, 13, 14}.C2  = {11, 32, 23, 14, 35}.C3 = {11, 22, 38}.C4 = {11,  ...

  6. 求0到n之间素数个数的序列

    要求: (1) 找出0-1000之间素数(2) 设f(n)表示0-n之间的素数个数,计算出当n=0,1,2,3,.....,997时f(n)的值,并写入文件 分析: 首先找素数使用一个效率较高的方法- ...

  7. JavaScript求两个数字之间所有数字的和

    这是在fcc上的中级算法中的第一题,拉出来的原因并不是因为有什么好说的,而是我刚看时以为是求两个数字的和, 很显然错了.我感觉自己的文字理解能力被严重鄙视了- -.故拉出来折腾折腾. 要求: 给你一个 ...

  8. 武汉科技大学ACM :1010: 零起点学算法12——求2个日期之间的天数

    Problem Description 水题 Input 输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据) Output 求出这2个日期之间的天数(不包括自身),每组测试数据一 ...

  9. loj 1063(求割点个数)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26780 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根 ...

随机推荐

  1. CRM 2016 及 CRM 365 更新地址

    CRM2016安装程序下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=50372 CRM 365 更新地址: https: ...

  2. jquery:获取checked复选框的问题

    jquery:获取checked复选框的问题 功能描述:要完成一个全选的功能,但总是获取不到复选框的被选中的个数,究其原因,是Jquery中length和checked使用不当所造成的. // 获取所 ...

  3. 简谈OSI七层模型(网络层)

    七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系. 它是一个七层的.抽象的模型 ...

  4. Android 开发 框架系列 EventBus 事件总线

    介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...

  5. Maven私服(Nexus)启动创建Windows服务

    sc create lutao-maven-nexus binpath= D:\maven-server\nexus--\bin\nexus.exe type= own start= auto dis ...

  6. JDK1.7 高并发下的HashMap

    HashMap的容量是有限的.当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高. 这时候,HashMap需要扩展它的长度,也就是进行Resize. 影响发 ...

  7. js跳转新窗口

    语法:window.open(url,[target]); eg: window.open("index.html"); window.open("index.html& ...

  8. echarts属性的设置(完整大全)

    // 全图默认背景  // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d6','#32cd ...

  9. Python面向对象编程(下)

    本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...

  10. Python面向对象编程(上)

    Python不仅支持面向过程编程,同时也支持面向对象编程.面向工程就是分析解决问题所需的步骤,然后用函数把这些步骤逐一实现,使用的时候再一个个调用函数就可以.面向对象则是把解决的问题按照一定规则划分为 ...