luogu1983【2013普及】车站分级(拓扑排序)
来源:互联网 发布:excel数据的分类汇总 编辑:程序博客网 时间:2024/04/27 23:51
每一趟列车,没停靠的站的分级一定比停靠了的小,我们从停靠的站向没停靠的站建一条有向边,显然是个DAG,我们进行拓扑排序,看分成几个阶段(把栈内所有上次的点都删掉算一次。)。就是答案。
#include <bits/stdc++.h>using namespace std;#define N 1010#define inf 0x3f3f3f3f#define ll long longinline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n,m,h[N],num=0,a[N],ans=0,into[N],q[N],top=0;bool g[N][N];bool f[N];void Topology_Sort(){ memset(f,0,sizeof(f)); while(1){ top=0; for(int i=1;i<=n;++i) if(!into[i]&&!f[i]) q[++top]=i,f[i]=1; if(!top) break;ans++; for(int i=1;i<=top;++i) for(int y=1;y<=n;++y) if(g[q[i]][y]) into[y]--,g[q[i]][y]=0; }}int main(){// freopen("a.in","r",stdin); n=read();m=read(); while(m--){ int nn=read();memset(f,0,sizeof(f)); for(int i=1;i<=nn;++i) a[i]=read(),f[a[i]]=1; for(int j=a[1];j<=a[nn];++j) if(!f[j]) for(int i=1;i<=nn;++i) if(!g[a[i]][j]) g[a[i]][j]=1,into[j]++; } Topology_Sort(); printf("%d\n",ans); return 0;}
阅读全文
0 0
- luogu1983【2013普及】车站分级(拓扑排序)
- Luogu1983 [NOIP2013]车站分级 解题报告【图论】【拓扑排序】【栈】
- 【拓扑排序】【NOIP普及2013T4】车站分级 Level
- 车站分级(拓扑排序)
- noip2013 车站分级 (拓扑排序)
- P1983 车站分级(拓扑排序)
- noip2013 车站分级 (拓扑排序)
- NOIP 普及组 车站分级 [拓扑排序][线段树优化连边][虚点优化]
- 洛谷 1983 车站分级 拓扑排序
- 【洛谷1983】车站分级(拓扑)
- NOIP2013 普及组 车站分级
- NOIP2013普及组-车站分级
- 拓扑排序以及队列栈的使用 (车站分级noip2013第四题)
- 【基础练习】【拓扑排序】codevs3294 车站分级题解
- NOIP 2013 普及组 复赛 level 车站分级
- NOIP 2013 车站分级
- 图论训练 车站分级 [数据结构优化建边][拓扑排序]
- 【图论经典题】NOIP2013 普及组 T4 车站分级(两种方法)
- codeforces 401D Roman and Numbers (数位dp)
- Android NDK之旅-OpenGL 初探
- 地理信息地图标记KML与KMZ的区别
- 免费使用函数计算,只有在阿里云能实现
- eclipse中server name选项变灰
- luogu1983【2013普及】车站分级(拓扑排序)
- 写代码,你必须要写的东西
- 三张图彻底了解Java中字符串的不变性
- 将Excel中一个表格的数据关联到另一个表格
- 技术文章 | Android Webview场景下防止dns劫持的探索
- Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp 忽略了剩余行默认分类
- 【玖哥乱弹】祭天时不同程序员的不同杀法
- codewars-5kyu-Simple Pig Latin:正则表达式的使用
- python之闭包函数 装饰器 练习