题解:洛谷 P1137 旅行计划
- 标签:图论,拓扑,dp
题意
给定一张 \(n\) 个点 \(m\) 条边的 DAG,对于每个 \(i\),求以它为终点最多经过多少个点?
思路
由于是 DAG,求的是终点 \(i\) 经过的所有点,而刚好拓扑序就满足这个。
那么就可以考虑拓扑排序。
设 \(f_i\) 是以 \(i\) 为终点的最多结点数,那么就有转移方程 \(f_v=max(f_v,f_u+1)\)。
在拓扑排序过程中,所有入度为 \(0\) 的 \(v\),\(v\) 可以从其它节点过来,也就是它的前驱 \(u\)。
即 \(u\) 的方案数 \(f_u\) 再加 \(1\)。
当然初始化时对于所有入度为 \(0\) 的 \(u\),\(f_u=1\)。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,x,y,in[N],f[N];
vector<int> g[N];
void topo(){
queue<int> q;
for(int i=1;i<=n;i++) if(in[i]==0) q.push(i),f[i]=1;
while(!q.empty()){
int u=q.front();
q.pop();
for(auto i:g[u]){
if(--in[i]==0){
f[i]=f[u]+1;
q.push(i);
}
}
}
}
signed main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=m;i++)
cin>>x>>y;
g[x].push_back(y),in[y]++;
}
topo();
for(int i=1;i<=n;i++) cout<<f[i]<<endl;
return 0;
}
题解:洛谷 P1137 旅行计划的更多相关文章
- 洛谷P1137 旅行计划
P1137 旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制 ...
- 洛谷 P1137 旅行计划
旅行计划 待证明这样dp的正确性. #include <iostream> #include <cstdio> #include <cstring> #includ ...
- 洛谷P1137 旅行计划 解题报告(拓扑排序+DP)
我看了一下其他大佬的题解,大部分都是拓扑排序加上DP.那么我想有的人是不明白为什么这么做的,拓扑排序有什么性质使得可以DP呢?下面我就提一下. 对一个有向无环图(Directed Acyclic Gr ...
- 洛谷 P1137 旅行计划 (拓扑排序+dp)
在DAG中,拓扑排序可以确定dp的顺序 把图的信息转化到一个拓扑序上 注意转移的时候要用边转移 这道题的dp是用刷表法 #include<bits/stdc++.h> #define RE ...
- 洛谷——P1137 旅行计划
https://www.luogu.org/problem/show?pid=1137 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出 ...
- 洛谷p1137旅行计划
题面 关于拓扑排序 因为这好几次考试的题目里都有在DAG中拓扑排序求最长/短路 txt说它非常的好用 就找了个题做了下 拓扑排序就是寻找图中所有的入度为零的点把他入队 然后再枚举它所有的连到的点,只要 ...
- 洛谷 P1251 餐巾计划问题(线性规划网络优化)【费用流】
(题外话:心塞...大部分时间都在debug,拆点忘记加N,总边数算错,数据类型标错,字母写错......) 题目链接:https://www.luogu.org/problemnew/show/P1 ...
- 洛谷 P2680 运输计划-二分+树上差分(边权覆盖)
P2680 运输计划 题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条 ...
- BZOJ4326或洛谷2680 运输计划
BZOJ原题链接 洛谷原题链接 用\(LCA\)初始化出所有运输计划的原始时间,因为答案有单调性,所以二分答案,然后考虑检验答案. 很容易想到将所有超出当前二分的答案的运输计划所经过的路径标记,在这些 ...
- loj2734「JOISC 2016 Day 2」女装大佬 || 洛谷P3615 如厕计划
loj2734 洛谷P3615 http://218.5.5.242:9021/problem/185 不会做... 题解(来自ditoly): 这一步更详细的解释(来自kkksc03): 还是从后面 ...
随机推荐
- ES_CCS/R(三):跨集群复制 Cross-cluster replication(CCR)
跨集群复制(CCR)功能支持将远程集群中的索引复制到本地集群. 可以在一些常见的生产用例中使用此功能: 灾难恢复(DR)/高可用性(HA):如果主群集发生故障,则进行灾难恢复. 辅助群集可以用作热备份 ...
- RVM Ruby 版本管理器的删除 Gatling
参考: https://www.jianshu.com/p/aef65d0c03a4
- 关于Java Chassis 3的契约优先(API First)开发
本文分享自华为云社区<Java Chassis 3技术解密:契约优先(API First)开发>,作者: liubao68. 契约优先(API First)开发是指应用程序开发过程中,将A ...
- JOISC2019 题解
\(\text{By DaiRuiChen007}\) Contest Link A. Examination Problem Link 题目大意 有 \(n\) 个二元组 \((a,b)\) 和 \ ...
- DP-Modeler软件初步教程1:数据文件导入
1.导入航拍影像的空三文件 先打开DPSlnManager.exe软件,DP数据管理是用这个软件来操作的. 先从CC中导出空间文件,XML格式和无损影像.然后导入到DP 2.从CC中导出OSGB,然 ...
- 一:nacos 的安装与启动方式
一: nacos 的下载与安装 1,下载 到 github下载 nacos-server-1.2.0.zip 文件 :https://github.com/alibaba/nacos/rele ...
- uni-app前端图表组件库,折线图横屏android失败的解决办法
网址:https://www.ucharts.cn/v2/#/demo/index,需要登录,微信就可以 我在使用折现图时,业务需要把曲线图在点击全屏时横屏全屏显示.就做个全屏页面,点击后,把opti ...
- 微信小程序,wx.getUserProfile接口将被收回,新的头像获取方式永久保存
微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ 新的获取头像方式:https://developers.weixin. ...
- sqlserver给某个用户授权某张表得操作权限,并利用这个用户进行跨库查询
Sql表授权 创建用户 此时,改用户登录是看不到任何表的 设置权限 创建连接 EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB','要 ...
- claude3国内API接口对接
众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢?这样,用户就 ...