
ACM_图论
文章平均质量分 76
cookiesMonster
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 3268 Silver Cow Party(dijkstra求单源最短路)
题意:有n个农场,要共同办一场聚会,集中到某一个农场。给出农场之间存在的m条单向路径,和举办聚会的农场编号x,求出 去x农场再回到原来农场 所需时间的最大值。思路:一开始我想,要知道各个农场到x农场的最短路径长度和从x农场回到各个农场的最短路径长度, 所以用floyd,时间复杂度n^3,可能有1000个农场,超时。后来改用dijkstra求最短单元路径,两次, 将其他农场到x农场转化为x农场到原创 2015-03-14 19:27:45 · 297 阅读 · 0 评论 -
HDU 1116 Play on Words(欧拉道路和欧拉回路)
题意:给出一些单词,问是否能将它们全部排成一列使上一个单词的尾字母和下一个单词的头字母相同思路:已字母未点,一个单词看成一条有向图,求是否能得到欧拉道路(每条路经过一次,从起点到终点)或欧拉回路(每条路经过一次,从一点能回到这一点)1)(有向图)欧拉道路:有一个点入度比出度大1,有一个点出度比入度大1,其余点出度等于入度2)(有向图)欧拉回路:各点出度等于入度3)在判断欧拉道路和欧原创 2015-03-14 20:55:35 · 379 阅读 · 0 评论 -
POJ 2377 Bad Cowtractors(Kruskal求最大生成树)
题意:修路工对小气的农民很不满,觉得让他花最大的代价修路,同时要让他看不出:1)各点相互到达,2)没有环思路:Kruskal求最大生成树,不过要注意这里不一定能将各点连在一起#include #include #include using namespace std;int n, m, fa[1010], ans;int find(int x){原创 2015-03-14 20:23:12 · 338 阅读 · 0 评论 -
POJ 1258 Agri-Net (kruskal求最小生成树)
题意:在n个农场之间修路使各个农场之间可以相互到达。思路:kruskal求最小生成树#include #include #include using namespace std;int n, cnt, fa[110];int find(int x){ int temp = x; while(fa[x] != x) {原创 2015-03-14 20:13:52 · 286 阅读 · 0 评论 -
poj2253 Frogger(最小生成树求最大边/最短单源路径变形)
题意:有一只青蛙在坐标为(x0,y0)的石头上,他不想游泳,想跳去找在(x1,y1)石头上的青蛙女神,还有另外的n-2块石头,求青蛙要保证一步可以跳多远才能跳到青蛙女神处。思路:我一开始是用kruskal算法做的,从长度最短的边开始连接,直到(x0,y0)到(x1,y1)有路径,即在同一棵数中,可以过。后来看了网上的题解,说这是一道单源最短路变形。G++编译,double 用了%.3lf 输出原创 2015-03-14 19:28:56 · 379 阅读 · 0 评论 -
POJ 2139 Six Degrees of Cowvin Bacon(floyd两点间最短距离)
题意:有一群牛,若其中两头牛一起看过一场电影,那么它们的关系是1度的,如果两头牛没有看过同一场电影但它们都与第三头牛是1度的关系,那么他们的关系是2度的。保证没两头牛之间都有关系,求与其他牛之间关系平均度数最小的牛的 平均度数*100,即先找出与其他牛关系度数和的最小。思路:用floyd(),得到没头牛与其他牛关系度数的最小值。#include #include int toge原创 2015-03-14 18:58:37 · 308 阅读 · 0 评论 -
HDU 1301 Jungle Roads (Kruskal求最小生成树)
题意:有n个点,要在他们之间搭建公路,知道一些点之间搭建公路的代价,求使所以点可以相互到达的最小代价(无向图、无环)。思路:Kruskal,先将建造路的代价由小到大排序,尽量取最小代价的点(如果取某条路后形成了环,没有增加连接的点,浪费,应舍弃)。#include #include int loop[30]; //用于确定点的集合struct Line{原创 2015-02-05 17:49:39 · 309 阅读 · 0 评论 -
POJ 2395 Out of Hay (Kruskal求最小生成树最大边)
题意:小女孩要拜访n个农场,她在路上要带水,她希望她需要带的水量尽量少。思路:Kruskal求最小生成树最大边#include #include using namespace std;int n, m, fa[2010];struct Edge{ int len, u, v;}edge[10010];int cmp(const void *a原创 2015-03-14 20:31:40 · 293 阅读 · 0 评论 -
POJ 3259 Wormholes(Bellman_Frod判断是否有负环)
题意:一个农民的几个农场,每个农场里面有几块地,每块地理由普通路(双向)和,虫洞(单向,权值为负),其中虫洞可以在人走进去之前将人送到对应的地点,弄明想尝试在通过虫洞将自己送到起点同时在虫洞将他送达之前跑回起点,问他是否能成功。思路:带负权值的有向图求是否存在负环。#include #define INF 0x7fffffffint n, m, w;int u[5600],原创 2015-03-14 19:11:45 · 339 阅读 · 0 评论 -
POJ 2240 Arbitrage (floyd变形)
题意:有n种货币,给出几对交换率,如 a 0.5 b,表示一个单位a货币可以换得0.5单位b货币,问是否能通过若干次交换后得到获利(一个单位a货币经过交换后得到多于一个单位的a货币)思路:floyd,要知道各货币之间相互转换最大的转换率,松弛操作变为:d[i][j] = max(d[i][j],d[i][k]*d[k][j]) 。有一个坑:输入数据时可能a货币与b货币是同一种货币。原创 2015-03-15 09:20:43 · 260 阅读 · 0 评论 -
POJ 2230 Watchcow (欧拉回路)
题意:有n(2思路:求有向图的欧拉回路,一开始我用road[i][j]记录从i到j方向的未走的路的数,空间复杂度10000*10000,爆了,要用邻接表读入数据,这样大概空间复杂度为2*50000#include #include #include using namespace std;vector list[10005];int num[10005];原创 2015-03-14 21:24:29 · 349 阅读 · 0 评论 -
POJ 1094 Sorting It All Out(拓扑排序)
题意:n个字母排序,给定m个关系,输出①在得到几个关系后确定排序(全序)②在得到几个关系后出现矛盾,有环③不能得到确定的排序(偏序)思路:直白的拓扑排序,但很多要注意的地方1)每读入一个关系做一次拓扑排序找入度为0点u,确定位置,使u指向的点的入度减1,再找入度为0的点...未排完序就找不到入度为0的点则有环,找到入度为0的点多于1个则关系不能确定2)在可以确定①②原创 2015-03-14 20:53:24 · 247 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine(floyd两点间最短距离)
题意:你要将一个消息传播给一群人,而你只能把消息告诉其中一个人,他会把它告诉另外几个人,并需要一定时间,另外的人又有把消息告诉其他人,需要一定时间,问是否能把消息传给这群人中的每个人,若能,输出总用时。思路:floyd 求从不同人开始将消息传给各个人对应的最短用时dist中的最大值max,以对应max值最小的人为传播起点。#include #include #d原创 2015-03-14 20:08:04 · 341 阅读 · 0 评论 -
codeforce #328D Super M (LCA)
题目:http://codeforces.com/contest/592/problem/D题意:给出一棵n个结点的树,要你以一个结点为起点走遍所以指定的m个结点。求出适合的起点使得走过的路程最短(每两个点间距离都是1),路程相同时,取标号小的点作为起点。思路:1)要走遍m个点用时最少,要先排除所以不需要的路径,得到最简路径。最简路径必组成一棵树,这颗树的顶点为m个结点的最近公共租原创 2015-11-24 21:00:34 · 427 阅读 · 0 评论