刷题向》图论》BZOJ1179 关于tarjan和SPFA的15秒(normal)
这道题可以考察图论的掌握程度(算半道水题)
题目如下

输入
1 2
2 3
3 5
2 4
4 1
2 6
6 5
10
12
8
16
1 5
1 4
4
3
5
6
#include<cstdio>
#include<cstring>
struct shit{
int aim;
int next;
int get;
bool use;
}e[];
int max(int x,int y)
{
return x>y?x:y;
}
int min(int x,int y)
{
return x<y?x:y;
}
int point,head[],n,m,ass,cnt,stack[],low[],time[],a,b,T;
int father[],quq[],val[],d[],star,ans;
bool f[];
void fuck(int x,int y)
{
e[++point].aim=y;
e[point].get=x;
e[point].next=head[x];
head[x]=point;
}
void rebuild()
{
memset(head,,sizeof(head));
point=;
for(int i=;i<=m;i++)
if(father[e[i].get]==father[e[i].aim]);
else fuck(father[e[i].get],father[e[i].aim]);
}
void tarjan(int sb)
{
low[sb]=time[sb]=++T;
f[sb]=true;
stack[++ass]=sb;
for(int k=head[sb];k!=;k=e[k].next)
{
if(!time[e[k].aim])
{
tarjan(e[k].aim);
low[sb]=min(low[sb],low[e[k].aim]);
}
else if(f[e[k].aim])low[sb]=min(low[sb],time[e[k].aim]);
}
if(time[sb]==low[sb])
{
f[sb]=false;
while(stack[ass]!=sb)
{
val[sb]+=val[stack[ass]];
f[stack[ass]]=false;
father[stack[ass--]]=sb;
}
ass--;
}
}
void SPFA(int num)
{
memset(f,,sizeof(f));
star=,ass=;
quq[++star]=num,f[num]=true,d[num]=val[num];
while(star<=ass)
{
int u=quq[star++];
for(int k=head[u];k!=;k=e[k].next)
{
int v=e[k].aim;
if(d[u]+val[v]>d[v])
{
d[v]=d[u]+val[v];
if(f[v])continue;
quq[++ass]=v;
f[v]=true;
}
}
f[u]=false;
}
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&a,&b);
fuck(a,b);
}
for(int i=;i<=n;i++)
{
father[i]=i;
scanf("%d",&val[i]);
}
for(int i=;i<=n;i++)if(!time[i])tarjan(i);
rebuild();
scanf("%d%d",&a,&b);
SPFA(father[a]);
for(int i=;i<=b;i++)
{
scanf("%d",&a);
ans=max(ans,d[father[a]]);
}
printf("%d",ans);
return ;
}
刷题向》图论》BZOJ1179 关于tarjan和SPFA的15秒(normal)的更多相关文章
- 刷题向》关于搜索+tarjan的奇怪组合题 BZOJ1194 (normal+)
关于这道题,其实看懂了的话还是比较好写的,只是题目实在又臭又长,没有让人读下去的勇气. 给出题目翻译: 给你S张图, 每张图有M个点,其中M个点中有N个是特殊单位,会给出. 每个点又有0.1两条边指向 ...
- 刷题向》关于线段树的区间开根号 BZOJ3211(NORMAL+)
这是一道关于线段树的区间开根号的裸题,没什么好讲的. 值得注意的是,因为有区间开根号的性质,所以我们每一次更改操作只能把更改区间所覆盖的所有元素全部查找,当然你直接找效率明显爆炸... 能够注意到,指 ...
- 看完互联网大佬的「LeetCode 刷题手册」, 手撕了 400 道 Leetcode 算法题
大家好,我是 程序员小熊 ,来自 大厂 的程序猿.相信绝大部分程序猿都有一个进大厂的梦想,但相较于以前,目前大厂的面试,只要是研发相关岗位,算法题基本少不了,所以现在很多人都会去刷 Leetcode ...
- 【刷题】BZOJ 4316 小C的独立集
Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...
- 2021.12.19 eleveni的刷题记录
2021.12.19 eleveni的刷题记录 0. 本次记录有意思的题 0.1 每个点恰好经过一次并且求最小时间 P2469 [SDOI2010]星际竞速 https://www.luogu.com ...
- 2021.12.16 eleveni的刷题记录
2021.12.16 eleveni的刷题记录 1. 数论 https://www.luogu.com.cn/problem/P2532 1.1卡特兰数 https://www.luogu.com.c ...
- 【刷题记录】BZOJ-USACO
接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...
- BZOJ第一页刷题计划
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...
- $2019$ 暑期刷题记录1:(算法竞赛DP练习)
$ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...
随机推荐
- Go标准容器之List
简介Go的标准包container中包含了常用的容器类型,包括conatiner/list,container/heap,container/ring.本篇介绍conatiner/list. cona ...
- python学习之数据结构
python的数据很丰富,所以对于数据分析来讲, python是一种最合适的选择 下面讲述一下常见的数据结构,包括栈,队列,元组,字典,集合等,以及对这些数据结构进行操作 #堆栈,后进先出 a=[10 ...
- [转载] FFMPEG结构体分析:AVFrame
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...
- zookeeper运维(转)
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- 开启mac terminal 命令/路径自动补全功能
用惯了windows命令行工具的按Tab自动补全路径功能后,在mac terminal上敲命令很不习惯.其实mac terminal也有这个功能. 在命令行输入nano .inputrc 进入.inp ...
- 字符串(二)(PHP)
1.大段文本在PHP中应该如果表示? 答: <?php $str = <<<aaa hello word; fjasdflj fjslad aaa;date_sub() aaa ...
- C++的三大特性?C也可以做到
C++的三大特性是什么?封装.继承与多态,那么今天这篇文章小编就来介绍一下,如何用C语言实现C++的这三个特性. 1.封装 何为封装? 在面向对象的思想中,将数据和对数据的操作封装在一起——即类. 类 ...
- npm国内镜像介绍
这个也是网上搜的,亲自试过,非常好用! 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set reg ...
- java代码练习======每隔5行打印数字
总结:当我们感觉数字排列横排,竖排不好看的时候,学会空几行在排列,哎呦,效果不错喔 package com.aa; public class West2 { public static void ma ...
- 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况
装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...