车站分级
来源:互联网 发布:淘宝寿衣门事件 编辑:程序博客网 时间:2024/04/20 12:05
这是一道拓补排序的题,我们的目的是找最少有几级的车站,可以转化为建图然后找图一共有几层;
把每次组数据都视为一层,把每一层没有停下的车站做一条单向边连到停下的车站上,那么每一条路便代表了一层,最后在根据拓补排序的算法看一共要跑几次。
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;int sta[1010],map[1010][1010],in[1010];bool vis[1010];int main(){int t,n,m;queue<int>q;cin>>n>>m; for(int i=1;i<=m;i++){memset(vis,0,sizeof(vis));cin>>t;for(int j=1;j<=t;j++){cin>>sta[j];vis[sta[j]]=true;}for(int j=sta[1];j<sta[t];j++){if(!vis[j]){vis[j]=true;for(int k=1;k<=t;k++){if(map[j][sta[k]]==0){//把没有停下的车站连接到停下的map[j][sta[k]]=1;in[sta[k]]++;}}}}}memset(vis,0,sizeof(vis));int ans=0;while(1){//只要还有数就一直循环for(int i=1;i<=n;i++){if(in[i]==0&&!vis[i]){q.push(i);vis[i]=true;}}if(q.empty())break;//一旦都找完了,就跳出while(!q.empty()){for(int i=1;i<=n;i++){if(map[q.front()][i]==1){map[q.front()][i]=0;in[i]--;}}q.pop();//每找完一个就把找的弹出来
}ans++;}cout<<ans;}
0 0
- 车站分级
- 车站分级
- 车站分级
- NOIP2013 车站分级
- NOIP2013P4 车站分级 题解
- NOIP2013车站分级
- 洛谷 P1983 车站分级
- NOIP 2013 车站分级
- 洛谷 P1983 车站分级
- 洛谷 P1983 车站分级
- 洛谷 1983 车站分级
- 车站分级 洛谷p1983
- NOIP2013 车站分级
- luogu P1983 车站分级
- [NOIP2013]车站分级 解题报告
- swust oj 2553 车站分级
- 车站分级(拓扑排序)
- NOIP2013 普及组 车站分级
- SAP EPIC 银企直连 系列知识分享
- spark
- ps的颜色混合模式算法
- Android View的绘制流程 (http://www.jianshu.com/p/5a71014e7b1b)
- java对象表示方式:序列化和反序列化
- 车站分级
- postgresql在linux下的的开机自启动服务与环境变量的配置
- 说一说从源码角度分析android蓝牙设备如何互联
- summernote处理上传图片到自己的服务器
- TCP的三次握手(图解)——为何需要三次握手
- asList和subList的缺陷
- UltraEdit设置默认编码
- 剑指offer--面试题18:树的子结构
- java获取指定文件夹下的所有文件名