题解:  暴力建图当然gg 我们考虑用线段树分块建图的思想 因为涉及到两个区间 对着建图 一个线段树不够 考虑用两个线段树 一个作为出树(出树儿子向父亲连边) 一个作为入树(父亲向儿子连边) 每次出树向入树连边 这样建图的话也是mlogn^2的 显然还可以优化 我们采用对于每次连边 用一个超级大源点 这样的话每次连边为log^n级别的 然后对于入树而言 他可以和出树平行连边 这样的话 在本质上 还是两个区间直接产生贡献=>等价于从出树的x节点->入树的y节点->出树的y节点 这样连边跑spfa统计入树答案即可

#include <bits/stdc++.h>
#define mp make_pair
const int MAXN=8e5+10;
const int inf=1e9;
using namespace std;
vector<pair<int,int> >vec[MAXN<<3];
int pos[MAXN],sz,S,n,m,p;
void built(int rt,int l,int r){if(l==r){pos[l]=rt;return ;}vec[rt<<1].push_back(mp(rt,0));vec[rt<<1|1].push_back(mp(rt,0));int mid=(l+r)>>1;built(rt<<1,l,mid);built(rt<<1|1,mid+1,r);
}
void built1(int rt,int l,int r){vec[rt+sz].push_back(mp(rt,0));if(l==r)return ;vec[rt+sz].push_back(mp((rt<<1)+sz,0));vec[rt+sz].push_back(mp((rt<<1|1)+sz,0));int mid=(l+r)>>1;built1(rt<<1,l,mid);built1(rt<<1|1,mid+1,r);
}
void addedge(int rt,int l,int r,int ql,int qr,int vul){if(ql<=l&&r<=qr){if(vul>0)vec[rt].push_back(mp(S,1));else vec[S].push_back(mp(rt+sz,0));return ;}int mid=(l+r)>>1;if(ql<=mid)addedge(rt<<1,l,mid,ql,qr,vul);if(qr>mid)addedge(rt<<1|1,mid+1,r,ql,qr,vul);
}
int dis[MAXN<<3];bool vis[MAXN<<3];
queue<int>que;
void spfa(int t){for(int i=0;i<=S;i++)dis[i]=inf,vis[i]=0;que.push(t);vis[t]=1;dis[t]=dis[t+sz]=0;while(!que.empty()){int t1=que.front();que.pop();vis[t1]=0;for(int i=0;i<vec[t1].size();i++){if(dis[vec[t1][i].first]>dis[t1]+vec[t1][i].second){dis[vec[t1][i].first]=dis[t1]+vec[t1][i].second;if(!vis[vec[t1][i].first]){vis[vec[t1][i].first]=1;que.push(vec[t1][i].first);}}}}
}
int main(){scanf("%d%d%d",&n,&m,&p);S=(n<<3);sz=(n<<2);built(1,1,n);built1(1,1,n);int a,b,c,d;for(int i=1;i<=m;i++){scanf("%d%d%d%d",&a,&b,&c,&d);S++;addedge(1,1,n,a,b,1);addedge(1,1,n,c,d,0);S++;addedge(1,1,n,c,d,1);addedge(1,1,n,a,b,0);}spfa(pos[p]);for(int i=1;i<=n;i++)printf("%d\n",dis[pos[i]+sz]);
}

3073: [Pa2011]Journeys

Time Limit: 20 Sec  Memory Limit: 512 MB
Submit: 634  Solved: 191
[Submit][Status][Discuss]

Description

Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路。N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a,b),(c,d)表示,对于任意两个国家x,y,如果a<=x<=b,c<=y<=d,那么在xy之间建造一条道路。Seter保证一条道路不会修建两次,也保证不会有一个国家与自己之间有道路。Seter好不容易建好了所有道路,他现在在位于P号的首都。Seter想知道P号国家到任意一个国家最少需要经过几条道路。当然,Seter保证P号国家能到任意一个国家。注意:可能有重边

Input

第一行三个数N,M,P。N<=500000,M<=100000。
后M行,每行4个数A,B,C,D。1<=A<=B<=N,1<=C<=D<=N。

Output

N行,第i行表示P号国家到第i个国家最少需要经过几条路。显然第P行应该是0。

Sample Input

5 3 4
1 2 4 5
5 5 4 4
1 1 3 3

Sample Output

1
1
2
0
1

HINT

Source

seter翻译

转载于:https://www.cnblogs.com/wang9897/p/9479086.html

BZOJ3073: [Pa2011]Journeys相关推荐

  1. 【BZOJ3073】[Pa2011]Journeys 线段树+堆优化Dijkstra

    [BZOJ3073][Pa2011]Journeys Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在 ...

  2. P6348 [PA2011]Journeys 线段树优化建图 区间连区间

    传送门 文章目录 题意: 思路: 题意: 每次连接[a,b][a,b][a,b]与[c,d][c,d][c,d]之间所有点,让后跑最短路. 思路: 比普通的优化建图能简单点,我们只需要加两个虚点之间边 ...

  3. 退役前的做题记录1.0

    退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...

  4. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  5. [bzoj3073]Journeys

    题目描述 Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a, ...

  6. P6348-[PA2011]Journeys【线段树优化建图,最短路】

    正题 题目链接:https://www.luogu.com.cn/problem/P6348 题目大意 nnn个点的一张图,mmm条边表示区间[a,b][a,b][a,b]向区间[c,d][c,d][ ...

  7. 如果成为一名高级安卓开发_什么是高级开发人员,我如何成为一名开发人员?

    如果成为一名高级安卓开发 Becoming a Senior Developer is something many of us strive for as we continue our code ...

  8. 入职体检体检错了_我们如何更新入职体验并获得更多用户

    入职体检体检错了 by William Woodhead 威廉伍德黑德(William Woodhead) 我们如何更新入职体验并获得更多用户 (How we updated our onboardi ...

  9. 我的第一个web_登陆我的第一个全栈Web开发人员职位

    我的第一个web by Robert Cooper 罗伯特·库珀(Robert Cooper) 登陆我的第一个全栈Web开发人员职位 (Landing My First Full Stack Web ...

最新文章

  1. 【Luogu】P1013进制位(搜索)
  2. (0052)iOS开发之沙盒(sandbox)机制和文件操作(二)
  3. PHP封装返回Ajax字符串和JSON数组
  4. 《数据中心项目规范(征求意见稿)》
  5. iOS利用SDWebImage实现缓存的计算与清理
  6. 响应式编程笔记三:一个简单的HTTP服务器
  7. c语言图书信息管理系实验心得,C语言图书信息管理系统实验报告.doc
  8. Excel粘贴时如何跳过隐藏单元格
  9. 网络服务器ssh、ftp、telnet、samba配置总结
  10. word修订模式怎么彻底关闭_word修订模式取消不了
  11. 发送网页内容到onenote_将网页中的信息快速添加到OneNote笔记本的方法
  12. Zoommy for mac(图片素材搜索下载软件)
  13. 2021-12-28学习的道路是寂寞的,学成后的成绩是惊艳的。喜欢热闹是生物的本性,耐得住寂寞方显人性尊贵
  14. Win11未识别的网络无internet怎么办?
  15. java中打印大小写字母
  16. 机器学习 决策树和随机森林
  17. Git、Github和GitLab的区别及与SVN的比较
  18. Java小游戏学习笔记
  19. Lsky Pro+云服务器搭建私人图床
  20. 算法与分析-实验一 算法设计基础

热门文章

  1. android 自定义绘画,【整理】Android 自定义视图之画图
  2. pptx库ppt演示 python_详解 Python 操作 PPT 的各种骚操作!
  3. 我开发的kvm虚拟化虚拟机批量生产脚本
  4. idea中刷新maven依赖,总是拉不下来
  5. 2019-11-25 编写cmake 脚本注意事项
  6. 使用gsds绘制基因结构图_使用SnapGene viewer绘制比较基因簇结构图
  7. 微服务实战之Prometheus使用分享
  8. 个性化Unity游戏开发环境两则
  9. PPT 如何做好关卡设计
  10. java map 对象作为key_Java 将自定义的对象作为HashMap的key