文章目录

  • 题目分析
  • 题目链接

题目分析


来源:acwing

拓扑排序是对有向无环图的顶点的一种排序,它使得若存在一条从顶点A到顶点B的路径A→B,则在排序中顶点B出现在顶点A的后面

根据概念,可以想到算法:遍历每条边a→b,如果 起点a的坐标大于终点b的坐标,这就不是拓扑序列。

做题:

使用结构体来存每条边,保存起点和终点。

对于每次询问,保存拓扑序列,记录每个顶点的下标,用作判断谁在前谁在后。

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1010,M = 10010;
int n ,m;//每条边存起点和终点
struct Edge{int a, b;
}e[M];int p[N]; //记录序列中每个点的下标
int main(){cin >> n >>m;for(int i =0 ;i< m; i ++) cin >> e[i].a >> e[i].b;int k;cin >> k;bool is_first = true; //控制行末空格for(int i = 0; i<k; i++){//读入点for(int j =1; j<= n;j ++){int x;cin >> x;p[x] = j; //x的下标是j}bool success  =true;//遍历每条边,看是否符合要求 起点下标大于终点下标则不是拓扑序列for(int i = 0; i<m; i++){if(p[e[i].a] > p[e[i].b]){success = false;break;}}if(!success){if(is_first) is_first =false;else cout<<" ";cout<<i;}}
}

题目链接

PAT甲级1146 Topological Order

https://www.acwing.com/problem/content/1641/

PAT甲级1146 Topological Order :[C++题解]拓扑排序、结构体存边、图论相关推荐

  1. PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:并查集题目. 不清楚并查集的小伙伴,请移步并查集原理并查集板子:acwing836. 合并集合. 题意:给定一个连通图,当删掉任意1个 ...

  2. PAT甲级1029 Median:[C++题解]贪心、二路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...

  3. PAT甲级1070 Mooncake:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 对单件从高到低排序. 需要注意的是总需要量d设成double,不要设成int. ac代码 #include<bits/stdc ...

  4. PAT甲级1008 Elevator:[C++题解]模拟

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...

  5. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...

  6. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

  7. PAT甲级1154 Vertex Coloring :[C++题解]图论、模拟、结构体存边

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 这题的边不用邻接矩阵.邻接表来存,仅仅用结构体来存即可,结构体正好存边的两个端点,我们只要遍历每条边,判断端点的颜色是否相同即可. ...

  8. PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:首先把所有的边存储下来,使用结构体,结构体中保存两个端点. 然后对于每次询问,将出现过的顶点标志为true放在st数组中,然后遍历所有 ...

  9. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

最新文章

  1. matlab基本操作--基本数学定义
  2. SQL on Linux Run on Docker
  3. java怎么遍历优先级队列_打印优先级队列的内容[java]
  4. SAP FI 会计凭证过账bapi BAPI_ACC_DOCUMENT_POST
  5. 【本站作品】机器学习数学基础专辑
  6. Zurmo - - 全局配置
  7. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)
  8. 执子之手简约唯美的表白网站HTML源码
  9. WCF系列教程之客户端异步调用服务
  10. 软件测试用例设计练习
  11. 心电信号越界怎么回事_人体心电信号的特点
  12. linux 内存管理(8) —内存描述符(mm_struct)
  13. L1-049 天梯赛座位分配 (Python)
  14. 视频号|常见违规限流情况及解除方法
  15. 【嵌入式模块】常用扩展芯片及数据手册总结
  16. Alpha阶段敏捷冲刺③
  17. Outlook 2007无法连接Exchange 2007
  18. 软连接文件的创建删除
  19. 如何写一份详细的创业计划书?
  20. 最简单DIY基于STM32的远程控制电脑系统①(电容触摸+按键控制)

热门文章

  1. 初识boost之boost::share_ptr用法
  2. C# 关闭正在执行的文件
  3. SQL Server R2 地图报表制作(四)
  4. Java编程中写出好代码的建议(转发)
  5. android垂直排列元素_Android弹性布局(FlexboxLayout)
  6. a标签 vue 动态点击_vue实现a标签点击高亮方法
  7. 大数据分析中国冬季重度雾霾的成因(三)
  8. mysql 节点查根_(三)B数、B+树及在数据库索引中应用
  9. 【数理知识】二次型求导 矩阵求导
  10. 1.5 关于这门课-深度学习-Stanford吴恩达教授