随笔分类 - 最短路
摘要:链接:http://wikioi.com/problem/1021/这题挺有意思的,虽然比较水,但是让我想起来那次百度or腾讯的一道最大流的题目,很给力,也是对最后找边进行优化,不过这题比那题简单多了,找出最短路,然后对最短路上的变进行一下标记,最后找边的时候只招最短路上的边就可以了。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define loop(s,i,n) for(i = s;i q;42 q...
阅读全文
摘要:题目连接:http://poj.org/problem?id=2240思路:直接见图,floyd一遍之后看是否有自身大于一的。注意是有向图代码:View Code 1 #include <iostream> 2 #include <map> 3 #include <string> 4 #include <stdio.h> 5 using namespace std; 6 map<string,int> st; 7 string s1,s2; 8 double mp[50][50]; 9 void init(int n)10 {11 i
阅读全文
摘要:题目连接:http://poj.org/problem?id=1125题目就是要求你算每个点在能够到达所有点的情况下求到达所有点的费时中最大的最小值及其起点,如果不能到达直接输出disjoint。代码View Code 1 #include <iostream> 2 #include <stdio.h> 3 #define max 1000000 4 using namespace std; 5 int map[106][105]; 6 void init(int n) 7 { 8 int i,j; 9 for(i = 1;i <= n;i++)10 {11 ..
阅读全文
摘要:有N个点,青蛙A 在点1上,青蛙B在点2上,然后青蛙可以通过剩下的点来到达2点,求各个通路中最大的一段中的最小值~题目连接http://poj.org/problem?id=2253我的代码:View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include<algorithm> 5 #include <iostream> 6 using namespace std; 7 8 int n; 9 10 struct node11 {12
阅读全文
摘要:题意不再赘述。。。连接http://acm.hdu.edu.cn/showproblem.php?pid=4460此题直接郁闷致死。。。。比赛的时候用的是floyd然后直接超时。。。当时闪过spfa的想法,但是觉得如果是一个循环spfa话也会超时。。。今天试了一下。。。果然超时= =。。。郁闷啊亲。。。然后优化了一下,用一个邻接表去存边。一开始忽略了一点就是-1的输出。。。代码。View Code 1 #include <stdio.h> 2 #include <iostream> 3 #define inf 10000 4 #include <map> 5
阅读全文
摘要:题目连接:http://poj.org/problem?id=1062思路:这道题一开始我以为是DFS,但是看到是最少金额,我估计觉着应该可能就是最短路。见图的话就是根据题意,看a和b是否有直接关系,通过b,a的优惠价为多少(c),map[a][b] = c但是一般的最短路是明确起点和终点。但是我们的结果就是最小值点。所以我们可以以每个非1点为终点,以1为起点,依次循环找到他们对应的值,取各个路径最小的值,(每个路径的值加上他们本身的价值就是每个路径的值,不要忘记和1的直接价值比较)。然后就是对于等级限制的问题。一开始我吧最高的等级为1的等级+限制级数这样的方法去看是否合法。但是wa。后来把最
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4318题目大意:讲的是西电东送。让你输入N代表N个点,然后再输入M代表可以到M个地方去,每个M钟有一个表示节点,一个表示耗电的百分比,。最后输入三个数,一个是起点,一个是重点,一个是总电量。然后算出最后到达终点使得总电量最大可以是多少,不能到达的话输出IMPOSSIBLE!这道题也就转化成了求最大的转化率。相当于最长路的计算。由于N<=50000数目比较大,所以估计邻接矩阵会超事,然后写了个邻接表的代码:#include <stdio.h>#include <string.h
阅读全文
摘要:求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm。SPFA算法是西南交通大学段凡丁于1994年发表的.很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点
阅读全文
摘要:题目大意就是 你有足够多的坦克,让你用尽量多的坦克去占领电厂。有N+1各节点,0~n ,0为出发点,1~n为电厂。要想控制摧毁电厂,战胜对方,只需要占领一般的电量即可。但是特克会耗油,所一给你m条路,让你去计算最小耗电量~而且如果坦克不能通过m条路到达任意一个电厂的话就输出'impossible'连接:http://acm.hdu.edu.cn/showproblem.php?pid=3339代码:dijView Code 1 #include <stdio.h> 2 #include <string.h> 3 #define maxn 0x5fffff
阅读全文
摘要:disjkstra 算法View Code #include <iostream>#include <stdio.h>#include <string.h>using namespace std;int map[205][205];void inint(int n){ int i,j; for(i = 0;i < n;i++) for(j = 0;j < n;j++) if(i != j) map[i][j] = 0x5fffffff; else map[i][j] = 0;}//初始化~void Dijkstra(int s,int t,int
阅读全文

浙公网安备 33010602011771号