博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1137 旅行计划
阅读量:4308 次
发布时间:2019-06-06

本文共 1231 字,大约阅读时间需要 4 分钟。

 

 

前言:

这是道图论题,当然,搜索也行;

做题的中心我放在拓扑排序上

需要帮助吗()

 

分析:

拓扑排序的模板一个!!!

 

题目:

 

 

代码:

/*说真的,其实这道题很简单就是拓扑排序后把每个点的“等级”输出一遍问题是,拓扑排序是什么 队列啊(因为我也解释不清) qwq */#include
#include
using namespace std;queue
q;//存链表不能停 struct lian{ int to; int next;}lb[200010];int le[201000];//等级 int head[200100]; int t=0;int n,m,ans;int ind[200100];//入度 void add(int from,int to){ lb[++t].next=head[from];// 指向的下一条边的下标 lb[t].to=to;//指向的点 head[from]=t;//出发点所连的第一条边的编号 }//既然你会看这个,就一定会链表吧 int main(){ cin>>n>>m; for(int i=1;i<=m;++i) { int k,j; cin>>k>>j; add(k,j); ind[j]++;//统计入度 } for(int i=1;i<=n;++i){ if(!ind[i]){
//找到无入边的点 q.push(i);//压进队列 le[i]=1; } }//拓扑排序 while(q.size()){ int u; u=q.front();q.pop(); for(int i=head[u];i;i=lb[i].next)//遍历所连的边 { int v=lb[i].to;//找到指向的点 le[v]=max(le[v],le[u]+1);//计算该点的等级 if(!--ind[v]) q.push(v);//减入度,删边,为零则压入 } } for(int i=1;i<=n;++i) cout<
<

 

 

 

 

(很清楚明了吧)

(在MIKU小姐的帮助下,一个小时做完了)

 

 

THANKS FOR YOUR READING

 

THAT'S ALL.

 

转载于:https://www.cnblogs.com/For-Miku/p/10505643.html

你可能感兴趣的文章
<a4j:keeyAlive>的英文介绍
查看>>
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>
suse创建的虚拟机,修改ip地址
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>