博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.10.27-dtoj-3996-Lesson5!(johnny)
阅读量:6265 次
发布时间:2019-06-22

本文共 1638 字,大约阅读时间需要 5 分钟。

题目描述:

“最短的捷径就是绕远路,绕远路就是我最短的捷径”

转眼就Stage X 了,Stage X 的比赛路线可以看做一个n 个点m 条边的有向无环图,
每条边长度都是1。杰洛·齐贝林会选择走最长的那一条路径。
迪亚哥·布兰度决定摧毁一个城市以及所有关于该城市的边,由于变成恐龙后脑子有
点问题,他想要让摧毁后的Stage 最长路径最短,他想知道要摧毁哪个城市,及摧毁后
最长路径的长度,如果有多个城市答案相同,则输出编号最小的那一个。

输入:

本题包含多组数据,输入第一行一个整数T 代表数据组数

每组数据第一行两个整数n,m 表示点数,边数。
每组数据第2~m+1 行每行两个整数xi,yi 表示有一条连接xi,yi 的边。

输出:

对于每组数据,输出一行两个整数,表示删除的城市编号及删除该城市后最长

路径的长度。

数据范围:

对于所有数据,满足T≤10,1≤n≤100000,0≤m≤500000。

算法标签:拓扑+线段树(stl优先队列维护会被卡成80)

思路:

经过每一个点的最长路径可以表示成我的入度经过的走到我的最远距离,走出我的最远距离,于是根据拓扑序,每次把点模拟成一堆在s集合按拓扑序移动到t集合,维护其中的最长线段,用线段树维护。

以下代码:

#include
#define il inline#define _(d) while(d(isdigit(ch=getchar())))using namespace std;const int N=1e5+5,M=5e5+5;int ans,m,n,head[2][N],ne[M<<1],to[M<<1],cnt,out[N],q[N],r,l,in[N];int f[N],g[N],id,maxn[N<<2],c[N];char ch;int read(){
int x;_(!);x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return x;}il void insert(int op,int x,int y){ne[++cnt]=head[op][x];head[op][x]=cnt;to[cnt]=y;}il void ins(int x,int l,int r,int pos,int v){ if(l==r){ c[l]+=v;if(c[l]>0)maxn[x]=l;else c[l]=0,maxn[x]=-1;return; } int mid=(l+r)>>1; if(pos<=mid)ins(x<<1,l,mid,pos,v); else ins(x<<1|1,mid+1,r,pos,v); maxn[x]=max(maxn[x<<1],maxn[x<<1|1]);}int main(){ int T=read();while(T--){ n=read();m=read();ans=n; l=0;r=0;id=1;for(int i=1;i<=n;i++)head[0][i]=head[1][i]=0,out[i]=f[i]=g[i]=c[i]=in[i]=0;cnt=0; for(int i=1;i<=(n<<2);i++)maxn[i]=0; while(m--){
int x,y;x=read();y=read();insert(0,x,y);insert(1,y,x);in[y]++;out[x]++;} for(int i=1;i<=n;i++)if(!out[i])q[++r]=i; while(l
View Code

 

转载于:https://www.cnblogs.com/Jessie-/p/9861544.html

你可能感兴趣的文章
js进阶 10-1 JQuery是什么
查看>>
Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
查看>>
orcale查询表之间的关联关系
查看>>
关于pythoh面向过程开发人员三步转面向对象的补充,再加一步,四步走战略。转面向对象也可以有固定公式。...
查看>>
SVN设置必须锁定
查看>>
(Apache)ab 压力测试 简单使用
查看>>
程序包com.sun.image.codec.jpeg不存在解决方法
查看>>
Linux也有后悔药,五种方案快速恢复你的系统
查看>>
OpenLDAP在win2008上安装配置
查看>>
根据id查询所有子节点/父节点,mysql 以及ssm前后台处理流程
查看>>
如何提交内核补丁--checkpatch.pl使用【转】
查看>>
MFC程序显示控制台输出
查看>>
网易博客挂了,转一篇以前的文章过来纪念一下吧。。
查看>>
三角形(css3)
查看>>
Cgroups 与 Systemd
查看>>
java三大框架实现任务调度——IRemindService
查看>>
(Z)MySQL变量的使用
查看>>
浅谈命令查询职责分离(CQRS)模式
查看>>
洛谷P1481 魔族密码(LIS)
查看>>
SQL Server 访问URL 调用WebServer
查看>>