P1137 旅行计划
1.uva253骰子涂色2.洛谷uva2203.uva12096集合栈计算机 The SetStack Computer4.uva101The Blocks Problem5.uva400 Unix Is命令 Unix ls6.uva10391 复合词 Compound Words7.小球下落 Dropping Balls (uva679)8.树的层次遍历 Trees on the level uva1229.树 Tree uva54810.天平 Not so Mobile uva83911.P1102 A-B 数对12.成最多水的容器13.P3367 【模板】并查集14.947. 移除最多的同行或同列石头15.P1082 [NOIP2012 提高组] 同余方程16.803 打砖块17.B3644 【模板】拓扑排序 / 家谱树18.U107394 拓扑排序模板
19.P1137 旅行计划
20.936 戳印序列21.P4017 最大食物链计数22.2050 并行课程 III23.P3366 【模板】最小生成树24.P2330 [SCOI2005] 繁忙的都市25.Abbott的复仇 Abbott's Revenge26.P1960 郁闷的记者27.P4391 [BOI2009] Radio Transmission 无线传输题解
拓扑排序+dp。
首先以入度为零的结点为起始结点,其游览城市数量为1,接下来每到下一结点,游览城市数++;即当前结点的游览城市数是上一结点的游览数+1,并取最大值。
code
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int head[N],Next[N*2],to[N*2],sum[N],pre[N],cnt=1,que[N]; void build(int x,int y){ Next[cnt]=head[x]; to[cnt]=y; head[x]=cnt; sum[y]++; } int main(){ int n,m; cin>>n>>m; for (int i=1;i<=m;i++){ int x,y; cin>>x>>y; build(x,y); cnt++; } int l=0,r=0; for (int i=1;i<=n;i++){ if (sum[i]==0){ que[r++]=i; pre[i]=1; } } while (l<r){ int fi=que[l]; for (int i=head[fi];i>0;i=Next[i]){ if (--sum[to[i]]==0){ que[r++]=to[i]; pre[to[i]]=pre[fi]+1; } } l++; } for (int i=1;i<=n;i++) printf("%d\n",pre[i]); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现