hdu 1285 确定比赛名次

主题思想: 拓扑排序。 拓扑排序的方法:1. 根据顶点入度进行计算,首先选取入度为0的节点,然后,去掉入度为0的顶点以及它出发的所有边。直到所有找到所有顶点。2.还有一种dfs的方法,根据dfs完成的顺序,把先完成的节点加入栈,最后出栈就是拓扑排序序列,即拓扑排序序列与dfs先完成的节点顺序相反...

2017-09-27 16:25:16

阅读数:76

评论数:0

hdu 1272 小希的迷宫

主题思想: 判断连通分量,有没有环,是不是最小生成树。 判断连通分量可以用并查集来做,如果新来一条边,这条边的两个端点的根是同一个,那么加上这条边后,和根就会构成一个环,如果要输出环,可以采用dfs+ stack的方式把构成环的节点压入栈。 如果没有环,只有一个连通分量,边的个数+1 等于顶点...

2017-09-23 10:39:20

阅读数:61

评论数:0

hdu 1269

主题思想: 图论 ,判断一个图是否是强联通,以及求图的强联通分量。判断一个图是否是强联通的,有两种算法,一个是kosaraju 算法,和 tarjan 算法, kosaraju是一个需要建立逆图的算法,这里介绍tarjan算法 核心思想是依据DFS. 更新LOW[i] 。具体参考博客:ht...

2017-09-22 16:53:35

阅读数:101

评论数:0

hdu 1217 arbitrage

主题思想 : arbitrage 套利问题,可以转化为求最长路径问题,首先把所有节点间的利率初始化为0,然后求出本身到本身节点最大路径值。 如果是求指定两点的套利问题,可以用dijkstra,针对本题,是求的任意货币间所以用 floyd 求任意两点之间最短路径。floyd 算法代码模...

2017-08-27 15:22:07

阅读数:94

评论数:0

hdu 1198

主题思想 : 这个题目就是求有多少个联通分量。用union Find结构很容易做到union find 核心代码,带优化版本int a[maxn]; int cnt[maxn]; // 优化使用的,用来计数,一个根下有多少个节点。// initfor(int i=0;i<maxn;i++...

2017-08-20 20:58:22

阅读数:83

评论数:0

hdu 1116 Play on Words

用深搜超时。 后来用欧拉回路。 union set 原来是并查集 ,是种数据结构,我看英文知道有这个union set 刚开始还以为是种算法。union set code:int height[MAX]; int root[MAX]; for(int i=0;i<26;i++){...

2017-08-03 21:02:38

阅读数:87

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭