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】旅行计划【拓扑排序模板】相关推荐

  1. 洛谷 1137 旅行计划

    [题解] 拓扑排序+DP即可. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #in ...

  2. 洛谷 P1137 旅行计划 1

    题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终 ...

  3. 洛谷 P1137 旅行计划 题解

    洛谷 P1137 旅行计划 题解 洛谷 P1137 题目 小明要去一个国家旅游.这个国家有 N N N个城市,编号为1至 N N N,并且有 M M M条道路连接着,小明准备从其中一个城市出发,并只往 ...

  4. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

  5. 洛谷P1983 车站分级 拓扑排序

    题目链接:https://www.luogu.com.cn/problem/P1983 此题是用拓扑排序求层数,将等级高的点连向等级的点,连成的图用拓扑排序看一下多少层,即答案. 代码如下 #incl ...

  6. 洛谷 P1137 旅行计划

    题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终 ...

  7. 最短工期 (25 分)【拓扑排序模板】

    立志用最少的代码做最高效的表达 一个项目由若干个任务组成,任务之间有先后依赖顺序.项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务.现给定一个项目中各个任务之间的关 ...

  8. Kahn拓扑排序模板

    Kahn拓扑排序模板 O(V+E) #include<bits/stdc++.h> using namespace std;typedef long long ll; const int ...

  9. 2021寒假——洛谷刷题计划(35题)

    (希望大家不要Copy) AC:Accept,程序通过. CE:Compile Error,编译错误. PC:Partially Correct,部分正确. WA:Wrong Answer,答案错误. ...

  10. Leetcode 1436旅行终点站 拓扑排序 并查集与队列

    题目介绍 题目难度: easy 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 ...

最新文章

  1. 朴素贝叶斯预测是否为垃圾短信
  2. hdu1394线段树点修改,区间求和
  3. 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和
  4. vue 多选自动触发_Vue,初次邂逅(二)
  5. 解决动态规划问题4步曲
  6. LeetCode 1679. K 和数对的最大数目(哈希)
  7. 奖励超10万!交大超牛本科生:成果达博士毕业水平,如今保研国家重点实验室...
  8. 断开式 Dgv 修改数据 winform
  9. linux启动流程——initrd和initramfs
  10. activemq概念介绍
  11. C语言小案例_OA大典故障案例摘录【第1390篇】夏普mxm2608n 黑白复印机漏粉
  12. 模板方法模式-Template Method Pattern
  13. Js Switch语句
  14. C 二维数组,以及自定义二维数组
  15. 用户画像 | 标签数据存储之MySQL真实应用
  16. 降压式变换电路(Buck电路)详解
  17. 977.有序数组的平方
  18. 关于大学生道德现状的思考
  19. vue框架和uniapp框架区别,前端vue和uniapp哪个好用
  20. OceanBase简史

热门文章

  1. 洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
  2. Dw怎么背景图片设置
  3. mysql 单精度和双经度_***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)...
  4. 第八章-分析句子结构
  5. B站高清视频下载方法揭密
  6. Unity3D游戏开发之路:一月工作总结
  7. java打印Ascii码
  8. 在线教育如何应对流量洪峰?阿里云专家给出了“上云+云数据库”的答案!
  9. html中tab键的用法,利用Tab键快速创建html
  10. 阿里 70 后程序员的 24 个“避坑”法则