博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
noip车站分级 拓扑排序
阅读量:5886 次
发布时间:2019-06-19

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

这道题呢 每次输入一段数就把1~n里面没有在这组数里面的数和他们连一波 表示这些数比他们等级低 然后就搞一搞就好了哇

#include
#include
#include
using namespace std;const int M=3507;int read(){ int ans=0,f=1,c=getchar(); while(c<'0'||c>'9'){
if(c=='-') f=-1; c=getchar();} while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();} return ans*f;}int f[M][M],cnt;int in[M],x,n,m,v,sum[M];int head,tail,ans=1,q[M],num[M];int main(){ n=read(); m=read(); while(m--){ v=read(); cnt++; for(int i=1;i<=v;i++) q[i]=read(),sum[q[i]]=cnt; for(int i=q[1];i<=q[v];i++)if(sum[i]!=cnt){ for(int k=1;k<=v;k++) if(!f[i][q[k]]) f[i][q[k]]=1,in[q[k]]++; } } for(int i=1;i<=n;i++) if(!in[i]) q[tail++]=i,num[i]++; while(head!=tail){ int x=q[head++]; if(head>M) head=0; for(int i=1;i<=n;i++) if(f[x][i]){ in[i]--; if(!in[i]) {q[tail++]=i; num[i]=num[x]+1;} } } for(int i=1;i<=n;i++) ans=max(ans,num[i]); printf("%d\n",ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/lyzuikeai/p/7120944.html

你可能感兴趣的文章
mysql入门笔记1
查看>>
VM虚拟机添加硬盘
查看>>
常用单位解析、换算、线速转发
查看>>
Ex2010-09 Create a new Certificate
查看>>
vim命令学习总结
查看>>
线性表--单链表(C++)
查看>>
mysql 5.7.9 免安装版本
查看>>
【基础技术】Java基础那些事儿系列-成员变量与局部变量
查看>>
0726linux基础内容小记
查看>>
【加密工具】2019年网络安全加密工具排行,好用的计算机加密软件推荐
查看>>
练习题
查看>>
mysql中Timestamp,time,datetime 区别
查看>>
使用Python快速建立FTP服务器
查看>>
Python和Cython有什么关系?
查看>>
bind安装域名解析服务,以及分离服务
查看>>
Netfilter/Iptables Layer7 应用层过滤策略部署
查看>>
12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_b
查看>>
如何挂载另一个lvm硬盘
查看>>
安装cobbler
查看>>
第3章 方法的重载及参数传递
查看>>