NOIP2013 车站分级
来源:互联网 发布:excell复数矩阵求逆 编辑:程序博客网 时间:2024/04/27 16:30
题目:http://www.luogu.org/problem/show?pid=1983
分析:对于每趟,不经过的指向经过的,代表级别比自身大。拓扑排序,则同一时间入度为0的为同一级别。
代码:
#include <cstdio>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int Tmax=1005;int n,m,in[Tmax],notwait[Tmax],wait[Tmax],ans;queue<int> q,buffer;bool Edge[Tmax][Tmax];void toposort(){ int i,j,t; for(i=1;i<=n;i++) if(!in[i]) q.push(i); while(!q.empty()) { t=q.front(); q.pop(); for(j=1;j<=n;j++) if(Edge[t][j]&&--in[j]==0) buffer.push(j); if(q.empty()){ ans++; swap(q,buffer); } } return;}void add(){ for(int i=1;i<=notwait[0];i++) for(int j=1;j<=wait[0];j++) if(!Edge[notwait[i]][wait[j]]){ Edge[notwait[i]][wait[j]]=true; in[wait[j]]++; } return;}int main(){ int i,a,b,j,num; scanf("%d %d",&n,&m); for(i=1;i<=m;i++) { scanf("%d",&a); notwait[0]=wait[0]=0; for(j=1;j<=a;j++) { scanf("%d",&b); if(j==1) num=b; while(num!=b){ notwait[++notwait[0]]=num; num++; } wait[++wait[0]]=b; num++; } add(); } toposort(); printf("%d",ans); return 0;}
0 0
- NOIP2013 车站分级
- NOIP2013车站分级
- NOIP2013 车站分级
- [NOIP2013]车站分级 解题报告
- NOIP2013 普及组 车站分级
- NOIP2013普及组-车站分级
- noip2013 车站分级 (拓扑排序)
- noip2013 车站分级 (拓扑排序)
- 洛谷 P1983 [NOIP2013普及组 T4] 车站分级
- Luogu1983 [NOIP2013]车站分级 解题报告【图论】【拓扑排序】【栈】
- 车站分级
- 车站分级
- 车站分级
- 拓扑排序以及队列栈的使用 (车站分级noip2013第四题)
- 【图论经典题】NOIP2013 普及组 T4 车站分级(两种方法)
- NOIP2013P4 车站分级 题解
- 洛谷 P1983 车站分级
- NOIP 2013 车站分级
- winformf下的简单图片缩放
- SPOJ GSS2
- 黑马程序员————java中的递归原理
- 取模运算的性质
- Linux系统如何查看版本信息
- NOIP2013 车站分级
- 黑马程序员---IO流-字符流
- 将自定义类添加到到数据库FMDB
- 洛谷P1551 亲戚
- 我的CTF之旅(二)
- TFS域账户手动同步
- 遍历Map的方法
- NOIP2014 飞扬的小鸟
- java之集合学习(一)