题目传送门

由于满足游览先后顺序从西到东的性质,我们很自然的想到用拓扑排序处理出一个合理的游览顺序。

然鹅,之后呢?

事实上,拓扑排序常与Dp相结合,解决后效性。我们就可以在每次拓扑入队的时候更新答案,设f[i]表示终点为i能经过的最多城市数。则f[j]=max(f[j],f[i]+1).

*Update

思考的时候,没想到dp qwq. 知道要用dp后就想了很久,想出了记录前驱的方法,但是不太对。(挖坑)

code

 #include<cstdio>
#include<algorithm>
#include<queue> using namespace std; int n,m,x,y,tot,cnt;
int head[],du[],f[];
struct node{
int next,to;
}edge[]; void add(int x,int y)
{
edge[++tot].to=y;
edge[tot].next=head[x];
head[x]=tot;
} void topo()
{
queue<int>q;
for(int i=;i<=n;i++)
if(!du[i]) q.push(i),f[i]=;
while(!q.empty())
{
int u=q.front();q.pop();
for(int i=head[u];i;i=edge[i].next)
{
int v=edge[i].to;
f[v]=max(f[v],f[u]+);
if(--du[v]==) q.push(v);
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d",&x,&y),add(x,y),du[y]++;
topo();
for(int i=;i<=n;i++)
printf("%d\n",f[i]);
return ;
}

最新文章

  1. mysql 关键字 字段 转义
  2. 【Java 基础篇】【第五课】类的构造函数
  3. [转] How to dispatch a Redux action with a timeout?
  4. DORIS-软件网址
  5. WPF专业编程指南 - DispatcherUnhandledException
  6. 函数返回值 return
  7. MySQL学习笔记(一)&mdash;数据库基础
  8. 调用CMD命令的一个.NET工具类(MyWindowsCmd)
  9. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column &#39;t.statis_date&#39;
  10. iOS使用自签名证书实现HTTPS请求
  11. GitHub和75亿美金
  12. Preloading Your ASP.NET Applications
  13. js原生倒计时
  14. nodejs创建文件
  15. 一个不该写的bat
  16. 初始While循环和for循环
  17. Java ArrayList排序方法详解
  18. java学习:JMM(java memory model)、volatile、synchronized、AtomicXXX理解
  19. ExtJS+SpringMVC文件上传与下载
  20. CSUOJ 1560 图书管理员的表白方式

热门文章

  1. 洛谷——P2256 一中校运会之百米跑
  2. Spring Cloud(8):Sleuth和Zipkin的使用
  3. jmeter的master远程运行和停止slave
  4. Oracle: 通过命令行下载安装文件
  5. Office EXCEL 如何实现在单元格内换行
  6. hdoj 5093 Battle ships 【二分图最大匹配】
  7. 【Mongodb教程 第一课 补加课】 Failed to connect to 127.0.0.1:27017, reason: errno:10061 由于目标计算机积极拒绝,无法连接
  8. Swift基础一(代码)
  9. poj 1840 哈希
  10. OpenGL的版本号历史和发展