#P1137. 旅行计划(Travel Plan)

0
    ID: 8555 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P1137有向无环图上 DP拓扑排序动态规划CSP-J

旅行计划(Travel Plan)

旅行计划(Travel Plan)

题目描述

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

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

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

输入格式

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

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

输出格式

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

样例输入 #1

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

样例输出 #1

1
2
3
4
3

数据范围

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

  • 对于 20%20\% 的数据,1≤N≤1001\le N \le 100;
  • 对于 60%60\% 的数据,1≤N≤10001\le N \le 1000;
  • 对于 100%100\% 的数据,1≤N≤1000001\le N \le 100000,1≤M≤2000001\le M \le 200000。

知识点与难度

本题涉及的知识点从属于 CSP-J,难度(CF Rating):1250。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例及最小边界测试
1 20 3~8 1≤N≤1001 \le N \le 100,1≤M≤3001 \le M \le 300
2 15 9~11 Hack 数据:单条逆编号长链 N→N−1→⋯→1N \to N-1 \to \dots \to 1(卡按编号 1..N1..N 顺序直接递推的错误做法!)、多个入度为 00 的起点
3 30 12~20 1000≤N≤5×1041000 \le N \le 5 \times 10^4,M≤105M \le 10^5
4 25 21~25 N=105N = 10^5,M=2×105M = 2 \times 10^5 满规模 DAG 拓扑 DP 测试

出处:原题链接