LOJ-10102(求A到B之间的割点)
题目链接:传送门
思路:求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之间的割点)的更多相关文章
- js 求两个日期之间相差天数
//求两个日期之间的相差天数 function daysBetween(DateOne, DateTwo) { var OneMonth = DateOne.substring(5, DateOne. ...
- 求n到m之间素数的个数
Description 求n到m之间素数的个数 Input 多组测试数据,每组先输入一个整数t,表示组数,然后每组输入2个正整数n和m,(1 <= n <= m <= 10000) ...
- PHP 求两个日期之间相差的天数、月数
<?php /** * 求两个日期之间相差的天数 * (针对1970年1月1日之后,求之前可以采用泰勒公式) * @param string $day1 * @param string $day ...
- Frogger POJ - 2253(求两个石头之间”所有通路中最长边中“的最小边)
题意 题目主要说的是,有两只青蛙,在两个石头上,他们之间也有一些石头,一只青蛙要想到达另一只青蛙所在地方,必须跳在石头上.题目中给出了两只青蛙的初始位置,以及剩余石头的位置,问一只青蛙到达另一只青 ...
- Python实现求多个集合之间的并集
目的:求多个集合之前的并集,例如:现有四个集合C1 = {11, 22, 13, 14}.C2 = {11, 32, 23, 14, 35}.C3 = {11, 22, 38}.C4 = {11, ...
- 求0到n之间素数个数的序列
要求: (1) 找出0-1000之间素数(2) 设f(n)表示0-n之间的素数个数,计算出当n=0,1,2,3,.....,997时f(n)的值,并写入文件 分析: 首先找素数使用一个效率较高的方法- ...
- JavaScript求两个数字之间所有数字的和
这是在fcc上的中级算法中的第一题,拉出来的原因并不是因为有什么好说的,而是我刚看时以为是求两个数字的和, 很显然错了.我感觉自己的文字理解能力被严重鄙视了- -.故拉出来折腾折腾. 要求: 给你一个 ...
- 武汉科技大学ACM :1010: 零起点学算法12——求2个日期之间的天数
Problem Description 水题 Input 输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据) Output 求出这2个日期之间的天数(不包括自身),每组测试数据一 ...
- loj 1063(求割点个数)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26780 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根 ...
随机推荐
- spring cloud gateway - RequestRateLimiter
1. Official website 5.7 RequestRateLimiter GatewayFilter Factory The RequestRateLimiter GatewayFilte ...
- java面试多线程问题
Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环 ...
- android toolbar效果4
两个标题的,右边一个按钮 activity_main.xml: <android.support.v7.widget.Toolbar style="style/toolbarStyle ...
- kaggle首秀之intel癌症预测(续篇)
之前写了这篇文章.现在把他搬到知乎live上了.书非借不能读也,因此搞了点小费用,如果你觉得贵,加我微信我给你发红包返回给你. 最近的空余时间拿去搞kaggle了, 好久没更新文章了.今天写写kagg ...
- 学习node.js 第1篇 介绍nodejs
Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...
- wheel
http://guoqiao.me/post/2015/1212-pip-install-offline-via-wheels python wheel -r requirements.txt 下载 ...
- 3、支付结果 /items/result?point=1&orderNo=201903211035400001
<template> <div> <div class="toppic"> <img src="../../../assets/ ...
- H5页面input输入框含有键盘自带的表情符时显示异常
在做一个关于新闻的评论功能的H5页面时,需求里面要求能够发送表情显示表情,如果使用自定义的表情库,则在评论也还要加载大量的表情符图片,极大的影响加载速度,消耗流量,去看了下别的新闻网页版的评论部分也没 ...
- CORSFilter 跨域资源访问
CORS 定义 Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 ...
- python获取文件夹的大小(即取出所有文件计算大小)
import os path = r'/Users/authurchen/PycharmProjects/Demo' # print(os.listdir(path)) ls = os.listdir ...