
图-欧拉回路
the_conquer_zzy
计算机科学与技术专业
展开
-
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++){ root[i]=i; height[i]=1; }int Find(int原创 2017-08-03 21:02:38 · 203 阅读 · 0 评论 -
hdu 1198
主题思想 : 这个题目就是求有多少个联通分量。用union Find结构很容易做到union find 核心代码,带优化版本int a[maxn]; int cnt[maxn]; // 优化使用的,用来计数,一个根下有多少个节点。// initfor(int i=0;i<maxn;i++){ a[i]=i; cnt[i]=1; } int find(int v){ if(原创 2017-08-20 20:58:22 · 261 阅读 · 0 评论 -
hdu 1217 arbitrage
主题思想 : arbitrage 套利问题,可以转化为求最长路径问题,首先把所有节点间的利率初始化为0,然后求出本身到本身节点最大路径值。 如果是求指定两点的套利问题,可以用dijkstra,针对本题,是求的任意货币间所以用 floyd 求任意两点之间最短路径。floyd 算法代码模板: 主要是初始化,和三层循环//floyd init be to 0; void inital()原创 2017-08-27 15:22:07 · 249 阅读 · 0 评论 -
hdu 1272 小希的迷宫
主题思想: 判断连通分量,有没有环,是不是最小生成树。 判断连通分量可以用并查集来做,如果新来一条边,这条边的两个端点的根是同一个,那么加上这条边后,和根就会构成一个环,如果要输出环,可以采用dfs+ stack的方式把构成环的节点压入栈。 如果没有环,只有一个连通分量,边的个数+1 等于顶点的个数,那么就是最小生成树。AC代码:#include<iostream> #include<cstdi原创 2017-09-23 10:39:20 · 206 阅读 · 0 评论 -
hdu 1285 确定比赛名次
主题思想: 拓扑排序。 拓扑排序的方法:1. 根据顶点入度进行计算,首先选取入度为0的节点,然后,去掉入度为0的顶点以及它出发的所有边。直到所有找到所有顶点。2.还有一种dfs的方法,根据dfs完成的顺序,把先完成的节点加入栈,最后出栈就是拓扑排序序列,即拓扑排序序列与dfs先完成的节点顺序相反。对于本题,我采用第一种方法。本题应采用邻接表表示图,并且记录已经输入的边,如果重复,则不再增加入度。题原创 2017-09-27 16:25:16 · 224 阅读 · 0 评论 -
hdu 1269
主题思想: 图论 ,判断一个图是否是强联通,以及求图的强联通分量。判断一个图是否是强联通的,有两种算法,一个是kosaraju 算法,和 tarjan 算法, kosaraju是一个需要建立逆图的算法,这里介绍tarjan算法 核心思想是依据DFS. 更新LOW[i] 。具体参考博客:http://blog.youkuaiyun.com/w571523631/article/details/779907原创 2017-09-22 16:53:35 · 328 阅读 · 0 评论