【洛谷1137】旅行计划【拓扑排序模板】
Description
小明要去一个国家旅游。这个国家有N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止。
所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。
现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置。现在对于所有的i,都需要你为小明制定一条路线,并求出以城市i为终点最多能够游览多少个城市。
Input
第1行为两个正整数N, M。
接下来M行,每行两个正整数x, y表示了有一条连接城市x与城市y的道路,保证了城市x在城市y西面。
Output
N行,第i行包含一个正整数,表示以第ii个城市为终点最多能游览多少个城市。
Sample input
5 6
1 2
1 3
2 3
2 4
3 4
2 5
Sample output
1
2
3
4
3
hint
均选择从城市1出发可以得到以上答案。
对于20%的数据,N ≤ 100
对于60%的数据,N ≤ 1000N≤1000;
对于100%的数据,N ≤ 100000,M ≤ 200000;
分析
这题是一道拓扑排序模板题。认真理解一下PPT里的内容即可(背好板子)。
上代码
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int n,m,d[100001],tot,f[100010],b[100010];
struct node
{int next,to;
}a[400010];
queue<int>q;
void topsort()
{for(int i=1;i<=n;i++){if(!b[i])//找到一个入度为0的节点 {f[i]=1;q.push(i);//入队,开始拓扑排序 }}while(!q.empty()){int x=q.front();q.pop();for(int i=d[x];i;i=a[i].next){f[a[i].to]=max(f[a[i].to],f[x]+1);if(!--b[a[i].to]) q.push(a[i].to);}}
}
int main()
{ ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=m;i++){int x,y;cin>>x>>y;a[++tot].to=y;a[tot].next=d[x];d[x]=tot;b[y]++;}topsort();for(int i=1;i<=n;i++){cout<<f[i]<<endl;}return 0;
}
【洛谷1137】旅行计划【拓扑排序模板】相关推荐
- 洛谷 1137 旅行计划
[题解] 拓扑排序+DP即可. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #in ...
- 洛谷 P1137 旅行计划 1
题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终 ...
- 洛谷 P1137 旅行计划 题解
洛谷 P1137 旅行计划 题解 洛谷 P1137 题目 小明要去一个国家旅游.这个国家有 N N N个城市,编号为1至 N N N,并且有 M M M条道路连接着,小明准备从其中一个城市出发,并只往 ...
- P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...
- 洛谷P1983 车站分级 拓扑排序
题目链接:https://www.luogu.com.cn/problem/P1983 此题是用拓扑排序求层数,将等级高的点连向等级的点,连成的图用拓扑排序看一下多少层,即答案. 代码如下 #incl ...
- 洛谷 P1137 旅行计划
题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终 ...
- 最短工期 (25 分)【拓扑排序模板】
立志用最少的代码做最高效的表达 一个项目由若干个任务组成,任务之间有先后依赖顺序.项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务.现给定一个项目中各个任务之间的关 ...
- Kahn拓扑排序模板
Kahn拓扑排序模板 O(V+E) #include<bits/stdc++.h> using namespace std;typedef long long ll; const int ...
- 2021寒假——洛谷刷题计划(35题)
(希望大家不要Copy) AC:Accept,程序通过. CE:Compile Error,编译错误. PC:Partially Correct,部分正确. WA:Wrong Answer,答案错误. ...
- Leetcode 1436旅行终点站 拓扑排序 并查集与队列
题目介绍 题目难度: easy 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 ...
最新文章
- 朴素贝叶斯预测是否为垃圾短信
- hdu1394线段树点修改,区间求和
- 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和
- vue 多选自动触发_Vue,初次邂逅(二)
- 解决动态规划问题4步曲
- LeetCode 1679. K 和数对的最大数目(哈希)
- 奖励超10万!交大超牛本科生:成果达博士毕业水平,如今保研国家重点实验室...
- 断开式 Dgv 修改数据 winform
- linux启动流程——initrd和initramfs
- activemq概念介绍
- C语言小案例_OA大典故障案例摘录【第1390篇】夏普mxm2608n 黑白复印机漏粉
- 模板方法模式-Template Method Pattern
- Js Switch语句
- C 二维数组,以及自定义二维数组
- 用户画像 | 标签数据存储之MySQL真实应用
- 降压式变换电路(Buck电路)详解
- 977.有序数组的平方
- 关于大学生道德现状的思考
- vue框架和uniapp框架区别,前端vue和uniapp哪个好用
- OceanBase简史
热门文章
- 洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
- Dw怎么背景图片设置
- mysql 单精度和双经度_***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)...
- 第八章-分析句子结构
- B站高清视频下载方法揭密
- Unity3D游戏开发之路:一月工作总结
- java打印Ascii码
- 在线教育如何应对流量洪峰?阿里云专家给出了“上云+云数据库”的答案!
- html中tab键的用法,利用Tab键快速创建html
- 阿里 70 后程序员的 24 个“避坑”法则