题解:洛谷 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): 还是从后面 ...
随机推荐
- 开源相机管理库Aravis例程学习(六)——camera-features
目录 简介 例程代码 函数说明 arv_camera_get_integer arv_camera_get_string 简介 本文针对官方例程中的:04-camera-features做简单的讲解. ...
- java程序,如何打印详细报错堆栈信息
try { System.out.println(1/0); } catch (final Exception e) { log.error("ERROR", "Erro ...
- ETSI GS MEC 013,UE 位置 API
目录 文章目录 目录 版本 功能理解 Relation with OMA APIs Relation with OMA API for Zonal Presence Relation with OMA ...
- kubernetes之包管理器Helm
安装helm 安装helm客户端 [machangwei@mcwk8s-master ~]$ curl https://raw.githubusercontent.com/kubernetes/hel ...
- 整理C语言预处理过程语法的实用方法与技巧
预处理 目录 预处理 一.宏定义 数值宏常量 字符串宏常量 用define宏定义注释符号? 程序的编译过程 预处理中宏替换和去注释谁先谁后? 如何写一个不会出现问题的宏函数 do-while-zero ...
- wpf 无法从流中加载光标
使用wpf 加载图片光标时,无论是用光标文件的绝对路径还是使用uri资源的方式都不得行,及报无法从文件中加载光标或无法从流中加载光标.这中情况,就很有可能是光标cur文件不是标准的光标文件.比如你是通 ...
- 记录一次 对应用程序日志排查,老是刷出有本地ip登录Sqlserver数据库失败的日志
在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192....; 我查看ip发现是本机的ip地址.也就是说有本地的应用程序在 ...
- Java 8 中Stream用法
Stream是Java 8新增的接口,Stream可以认为是一个高级版本的 Iterator. 废话不多说直接上代码 package com.example.demo; import org.juni ...
- 记一次Idea无法打开记录(idea升级)
记一次Idea无法打开记录 前言,本来今天是打算升级Idea,然后体验一波的,结果升级完之后,发现无法打开idea(双击之后并没有任何打开的反应). 原因排查,打开idea所在目录,找到idea.ba ...
- WPF:DataGrid可过滤、多语言
目录 介绍 背景 怎么运作 自定义控件 如何使用 基准 下载演示项目 - 133.8 KB GitHub 存储库 NuGet 包