ACM知识竞赛 之 SDUT3037 让领导先走(拓扑排序)
来源:互联网 发布:淘宝网账号怎么申请 编辑:程序博客网 时间:2024/04/28 19:25
让领导先走
Time Limit: 2000MS Memory limit: 65536K
题目描述
完啦完啦,公司里发火灾拉,大家快跑啊,再不跑就没命啦。大家不要乱,请按顺序通过消防通道,说到顺序,那么问题来了。
按照中国特色社会主义文化,我们严格贯彻落实一件事,那就是,让领导先走。
现在又n人,从1标号到n。如果a是b的领导的话,就必须让a排在b的前面。
那么你就要安排大家的顺序。我保证一定有解。
输入
多组输入,然后对于每个测试数据,第一行有两个整数n(1 <= n <= 30000)和m(1 <= m <= 100000),分别表示人数和上下级存在数。
然后m行,每行两个整数a和b,表示有一个a是b的领导。a和b必然不同。
输出
对每个测试数据,输出一行排队的顺序,用空格隔开。
示例输入
5 103 51 42 51 23 41 42 31 53 51 2
示例输出
1 2 3 4 5
后台数据太水,矩阵居然水过了。。。下面还是用邻接表吧
#include <iostream>#include <cstring>#include <cstdio>#include <string>#include <stdlib.h>#include <queue>#include <algorithm>using namespace std;#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <stack>#define inf 0x3f3f3f3fusing namespace std;struct node{ int x,y;} eg[100010],e[100010];struct no{ int x,y,next;}q[200010];int cmp(const void *a,const void *b){ struct node *aa=(struct node *)a; struct node *bb=(struct node *)b; if(aa->x!=bb->x) return aa->x-bb->x; else return aa->y-bb->y;}int n,m,tt,t;int v[30010],d[30010];int head[30010];void init(){ memset(head,-1,sizeof(head)); memset(v,0,sizeof(v)); memset(d,0,sizeof(d)); tt=0; t=0;}void add(int xx,int yy){ q[t].x=xx; q[t].y=yy; q[t].next=head[xx]; head[xx]=t++;}int main(){ int flag; while(scanf("%d%d",&n,&m)!=EOF) { init(); for(int i=0; i<m; i++) scanf("%d%d",&eg[i].x,&eg[i].y); qsort(eg,m,sizeof(eg[0]),cmp); e[tt].x=eg[0].x; e[tt++].y=eg[0].y; for(int i=1; i<m; i++) { if(eg[i].x==eg[i-1].x && eg[i].y==eg[i-1].y) ; else { e[tt].x=eg[i].x; e[tt++].y=eg[i].y; } } for(int i=0;i<tt;i++) { add(e[i].x,e[i].y); d[e[i].y]++; } flag=0; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(v[j]==0&&d[j]==0) { for(int k=head[j]; k!=-1; k=q[k].next) d[q[k].y]--; v[j]=1; if(flag==0) { printf("%d",j); flag=1; } else printf(" %d",j); break; } } } printf("\n"); } return 0;}
0 0
- ACM知识竞赛 之 SDUT3037 让领导先走(拓扑排序)
- SDUTOJ 3037 让领导先走
- 让领导先走 SDUT 3037
- 谁在火中大喊:学生不要动,让领导先走!![转]
- ACM知识竞赛 之 SDUT3033 (最大差)
- ACM-图论-拓扑排序
- ACM知识竞赛 之 SDUT3032 神奇的树(水~~)
- 拓扑排序 gdufe acm 1183
- 数据结构之拓扑排序
- 小白书之拓扑排序
- 数据结构之拓扑排序
- 数据结构之拓扑排序
- 数据结构之拓扑排序
- 图之拓扑排序
- 数据结构之拓扑排序
- 图之拓扑排序
- ACM 104. [NOIP2003] 神经网络(拓扑排序)
- 排序算法之拓扑排序
- jquery ocupload一键上传文件应用
- MFC 自定义消息
- 人品计算器
- http协议基础
- KMP
- ACM知识竞赛 之 SDUT3037 让领导先走(拓扑排序)
- Phonegap使用device插件
- js undifined校验简便写法
- 使用Spring 2.x的声明事物配置方式
- 寻找最小的k个数
- nltk 3.0 的parse
- svn服务器的搭建和使用2
- Hibernate映射解析——关联映射(四)
- C# 克隆 基类