博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【洛谷p1983】车站分级
阅读量:4947 次
发布时间:2019-06-11

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

日常题前废话:

真的感觉估计图论题的边数是个unbelievable的玄学操作啊qwq

然后去翻白书:一个n阶的完全无向图含有n*(n-1)/2条边,一个n阶的完全有向图含有n*(n-1)条边。(这里阶好像是点数???)

就是因为没估计好边数,然后wa了好几次emmm

然后这道题用到拓扑排序,因此然后所以

你看这个博客它又大又圆,感觉好多东西都明日复明日,明日何其多了。


首先这道题是已知线路,让求最小分级数,咱也不知道为啥就用拓扑排序解了,反正就是用拓扑排序做就对啦。

然后首先是建图连边,这里我们的连边是在起点到终点之前所有的点中,从没停的点向停了的点连一条边,然后要注意不要连重边减小时间复杂度(然后还要注意的是连边是讲起点与终点之间的车站进行连边,并不是所有的都连边)。

样例第一条线路连边

样例第二条线路连边:

这整个样例的图(我猜会非常拥挤然后没有然后

首先扫描所有入度为0的点,将他们的级别设成1,加入队列。

然后进行while的(应该是bfs){

  • 首先将对顶元素出队,删去这个点所有的出边;
  • 被删去边的终点入度--;
  • 如果删去这条边后被删去边的终点的入度为0,就将其加入队列,然后它的级别定义为现在搜索的点+1(具体因为队列是有序加入的,因此一定最后加入的是级别最高的)

}  

  • 最后扫描所有级别,输出最大的就好啦;

CODE:

#include
#include
#include
#include
#include
#include
using namespace std;int n,m,head[2010],cnt,a[2010][2010],vis[2010],t[2010],du[2010],jb[2010][2010];struct node{ int to,next;}edge[2010000];void add(int from,int to){ edge[++cnt].to=to; edge[cnt].next=head[from]; head[from]=cnt;}queue
q;int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d",&a[i][0]); memset(vis,0,sizeof(vis)); for(int j=1;j<=a[i][0];j++) scanf("%d",&a[i][j]),vis[a[i][j]]=1; for(int j=a[i][1];j<=a[i][a[i][0]];j++){ if(!vis[j]){ for(int k=1;k<=a[i][0];k++){ if(!jb[j][a[i][k]]){ add(j,a[i][k]); jb[j][a[i][k]]=1; du[a[i][k]]++; } } } } } for(int i=1;i<=n;i++){ if(!du[i]){ q.push(i);t[i]=1; } } while(!q.empty()){ int d=q.front(); q.pop(); for(int i=head[d];i;i=edge[i].next){ du[edge[i].to]--; if(!du[edge[i].to]){ t[edge[i].to]=t[d]+1; q.push(edge[i].to); } } } sort(t+1,t+n+1); cout<
<

end-

转载于:https://www.cnblogs.com/zhuier-xquan/p/11056839.html

你可能感兴趣的文章
alias导致virtualenv异常的分析和解法
查看>>
html和jsp的区别及优缺点
查看>>
排列组合
查看>>
动态规划
查看>>
Spring的初始化:org.springframework.web.context.ContextLoaderListener
查看>>
Qt编写串口通信程序全程图文讲解(完整)
查看>>
Excel数据生成Sql语句的方法
查看>>
java中random()函数用法介绍
查看>>
C# OLEDB读取EXCEL表格时,某些字段为空解决方法
查看>>
Web前端开发HTML基础(1)
查看>>
bzoj1934: [Shoi2007]Vote 善意的投票
查看>>
The New Methodology新方法论
查看>>
Linux 进程管理剖析: Linux 同步方法剖析 内核原子,自旋锁和互斥锁
查看>>
day06---selenium剩余操作和自动登录
查看>>
Promise 基础学习
查看>>
干货!前端常见兼容性问题
查看>>
linux下mail命令使用
查看>>
晚安西南-----远控房魅影二之FKQ1440-14
查看>>
【例题】一笔画问题
查看>>
cuda8.0 + cudnn6 + tensorflow1.4 xing
查看>>