洛谷 P1137 旅行计划 题解

洛谷 P1137

题目

小明要去一个国家旅游。这个国家有 N N N个城市,编号为1至 N N N,并且有 M M M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市 i i i停止。

所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。

现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置。现在对于所有的 i i i,都需要你为小明制定一条路线,并求出以城市 i i i为终点最多能够游览多少个城市。


输入

第1行为两个正整数 N N N, M M M。

接下来 M M M行,每行两个正整数 x x x, y y y,表示了有一条连接城市 x x x与城市 y y y的道路,保证了城市 x x x在城市 y y y西面。


输出

N N N行,第 i i i行包含一个正整数,表示以第 i i i个城市为终点最多能游览多少个城市。


样例

input
5 6
1 2
1 3
2 3
2 4
3 4
2 5

output
1
2
3
4
3


说明&提示

均选择从城市1出发可以得到以上答案。

对于20%的数据, N N N≤100;

对于60%的数据, N N N≤1000;

对于100%的数据, N N N≤100000, M M M≤200000。


解题思路

板子
SPFA最长路径
当前点入度为0时入队
输出每个点为终点的最长路径


代码

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m,x,y,ans;
int f[520000],rd[520000],head[520000],dis[520000];
struct c{int to,next;
}a[550000];
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=m;i++){scanf("%d%d",&x,&y);a[i].to=y;a[i].next=head[x];head[x]=i;rd[y]++;}int h=0,t=0;for (int i=1;i<=n;i++){if (rd[i]==0) //入度为0时入度{t++;f[t]=i;}dis[i]=1; //自己是经过的第一个城市}do{h++;for (int i=head[f[h]];i;i=a[i].next){rd[a[i].to]--;dis[a[i].to]=max(dis[a[i].to],dis[f[h]]+1);  //更新最长路径if (rd[a[i].to]==0)  //入度为0时入队{t++;f[t]=a[i].to;}}}while(h<t);for (int i=1;i<=n;i++)cout<<dis[i]<<endl;return 0;
}

洛谷 P1137 旅行计划 题解相关推荐

  1. 洛谷 P1137 旅行计划 1

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

  2. 洛谷 P1137 旅行计划

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

  3. 洛谷 1137 旅行计划

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

  4. 洛谷 2680 运输计划 题解

    博客观赏效果更佳 题意简述 n n n个点的边带权树,给 m m m条关键的链.把树上一条边的权值变为0,使得 m m m条链的和中,最大值最小. n , m < = 1 e 5 n,m< ...

  5. 【洛谷】P1137旅行计划

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

  6. 洛谷P1273 有线电视网 题解

    洛谷P1273 有线电视网 题解 题目链接:P1273 有线电视网 题意: 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为 ...

  7. 洛谷P4568 [JLOI2011] 飞行路线 题解

    洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...

  8. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  9. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

最新文章

  1. 使用Html5+C#+微信 开发移动端游戏详细教程 总目录
  2. java安全点_关于OopMap、SafePoint(安全点)以及安全区域
  3. 分布式系统不得不说的CAP定理
  4. uboot源码——主Makefile分析
  5. poj 2777(线段树的节点更新策略)
  6. selinux= 为 disabled_Selinux安全加固
  7. VS2010/VS2012/VS2015下openGL环境配置(转)
  8. 哈工大讯飞联合实验室发布少数民族多语言预训练模型CINO
  9. 教你下载BarTender 2016
  10. 每周分享第 34 期
  11. SQL Server 2008 Express 及 SSMS Express 下载安装配置教程
  12. 微信小程序开发之微信小程序交互
  13. 机器学习:模型评估与选择:性能度量——代价敏感错误率与代价曲线
  14. Go初体验-实现平方根函数
  15. python判断闰年程序_python实现闰年
  16. Android 之度量单位px,dp,dip,sp,in,mm详解
  17. 号称最好的国产操作系统在 Windows 10 面前能否一战?
  18. 感恩节 | Hulu Thanksgiving Potluck聚餐
  19. 数据挖掘-朴素贝叶斯算法的R实现
  20. 企业微信实现消息通知功能

热门文章

  1. kali Linux 可使用的免驱USB无线网卡
  2. 计算机基础知识掌握评语,计算机学生老师评语
  3. extremetable 学习
  4. 皇家彩世界教程下载合约机是什么意思?
  5. Golang程序多平台交叉编译自动化脚本
  6. 解读中国电信5G NB-IoT用户破亿背后:中国物联网行业出现“领头雁”
  7. 自己编写的一个MT4客户端的EA,
  8. 财务报表,with用法, 科目余额
  9. 南京师范大学计算机二级c语言,学风于心,建设于行|C语言计算机二级帮扶顺利开展...
  10. taro中无法获取组件节点信息解决办法