方法一:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<set>
#include<vector>
using namespace std;
typedef long long ll;
const int maxx=30005;
int n,m;
int indegree[maxx];
int a[maxx];
vector<int>ans[maxx];
int main(){int t;cin>>t;while(t--){cin>>n>>m;memset(indegree,0,sizeof(indegree));memset(a,0,sizeof(a));for(int i=1;i<=n;i++){ans[i].clear();}for(int i=1;i<=m;i++){int x,y;scanf("%d %d",&x,&y);ans[y].push_back(x);indegree[x]++;}priority_queue<int>Q;for(int i=1;i<=n;i++){if(indegree[i]==0){Q.push(i);}}int k=0;while(!Q.empty()){int u=Q.top();Q.pop();a[++k]=u;for(int i=0;i<ans[u].size();i++){int t=ans[u][i];indegree[t]--;if(indegree[t]==0){Q.push(t);}}}for(int i=n;i>1;i--){cout<<a[i]<<" ";}cout<<a[1]<<endl;}return 0;
}
方法二:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<set>
#include<vector>
using namespace std;
typedef long long ll;
const int maxx=30005;
int n,m;
int indegree[maxx];
int a[maxx];
vector<int>ans[maxx];
void Topsort(int n){int index,flag,m;int k=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(indegree[j]==0){index=j;}}a[++k]=index;indegree[index]=-1;for(int j=0;j<ans[index].size();j++){int t=ans[index][j];indegree[t]--;}}
}
int main(){int t;cin>>t;while(t--){scanf("%d %d",&n,&m);memset(indegree,0,sizeof(indegree));memset(a,0,sizeof(a));for(int i=1;i<=n;i++){ans[i].clear();}for(int i=1;i<=m;i++){int x,y;scanf("%d %d",&x,&y);ans[y].push_back(x);indegree[x]++;}Topsort(n);for(int i=n;i>1;i--){cout<<a[i]<<" ";}cout<<a[1]<<endl;}return 0;
}

HDU4857拓扑排序模版题相关推荐

  1. poj2367拓扑排序模版题

    方法一: 采用二位数组的形式(也可以用邻接表形式) #include<iostream> #include<algorithm> #include<cstring> ...

  2. HDU5154拓扑排序模版题

    方法一: 采用邻接表的形式: #include<iostream> #include<algorithm> #include<cstring> #include&l ...

  3. HDU1285拓扑排序模版题

    方法一: #include<iostream> #include<algorithm> #include<cstring> #include<cmath> ...

  4. 数据结构-图论-拓扑排序模板题(hdu3342)(poj1270)(hdu4857)

    dfs与bfs的很直接的应用就是拓扑排序. 拓扑排序如果用数组来模拟链表进行操作,既解决了稀疏图的空间问题,又解决了用链表进行操作麻烦的问题 但是拓扑排序并不是数字大小之间的排序,而是某些事情之间的顺 ...

  5. 拓扑排序基础题——排序

    题目 由于公司在2013年的销售业务成绩优秀,公司总经理心情大好,决定给每位员工发奖金.公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少.于是总经理下令召开 m 方会谈.每位参加会谈的代 ...

  6. hdu4857 拓扑排序

    题目大意: 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.  同时,社会是不平等的,这 ...

  7. 拓扑排序三题(菜肴制作杂物最大食物链计数)

    目录 一.[HNOI]2015菜肴制作 二.洛谷1113杂物 代码一: 代码二: 三.最大食物链计数[洛谷4017] DAG:有向无环图 图的建立很重要 一.[HNOI]2015菜肴制作 传送门1 思 ...

  8. HDU 4857 逃生 拓扑排序好题 第一次做CLJ出的题

    逃生 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b ...

  9. POJ - 1094 Sorting It All Out(拓扑排序)

    https://vjudge.net/problem/POJ-1094 题意 对于N个大写字母,给定它们的一些关系,要求判断出经过多少个关系之后可以确定它们的排序或者排序存在冲突,或者所有的偏序关系用 ...

最新文章

  1. PHP 接收 UDP包_PHP早已不是十年前的鸟样!!!
  2. 如何使用 System.IO 和 Visual C# 读取文本文件
  3. 卸载mysql 服务
  4. jvm性能调优实战 -57数据日志分析系统的OOM问题排查
  5. Matlab 重命名
  6. Delta3d动态角色层
  7. hb-550s计算机电源,XFX TS 550金牌电源拆解及电路分析
  8. Spring定时任务@scheduled多线程的使用(@Async注解)
  9. spring单例的bean是单例还是原型
  10. Java-static概述
  11. 用java实现学生成绩管理系统(附有详细代码)
  12. 3 2012年 毕节市 工业废水排放量 5466 万吨 中国城市统计年鉴2013 335-341
  13. Java:计算代码耗时的5种方法
  14. Saas.为什么要搞Saas,会遇到哪些问题,看看5年Saas开发踩过的坑
  15. Android Studio在win10第二显示器模糊解决办法
  16. 上传文件到GPU服务器,上传文件到GPU服务器并运行文件
  17. 点选式验证码?使用深度学习搞定它
  18. 机器码农:深度学习自动编程
  19. java游戏spa,【Vue的路由,SPA概念】
  20. 计算机网络学习笔记:基础知识

热门文章

  1. 文本分类的目的和分类的方法
  2. 爬虫之requests模块超时参数timeout的使用
  3. Ubuntu18.04中pyhton默认版本从2.7换为3.x
  4. 网络工程师_记录的一些真题_2005上半年上午
  5. 写 Python 代码不可不知的函数式编程技术
  6. 【PHP源码分析】small内存规格的计算
  7. Java面向对象----封装概念
  8. zabbix3.4.7版本饼图显示问题
  9. 云计算究竟是什么呢?“汇新杯”新兴科技成果专项赛之——云计算
  10. 利用json模块解析dict报错找不到attribute 'dumps'[python2.7]