摘要: 题目链接题目大意:给定一个有向图(n<100),求最小圈。分析:任何一个圈至少有两个点,在圈中任取两个点i,j,圈的长度可以看成是d[i][j]+d[j][i],所以先用floyd求任意点对的最短距离,然后枚举点对求最小圈长。时间复杂度为O(N3)。View Code 1 #include <stdio.h> 2 #define MIN(a,b) ((a)<(b)?(a):(b)) 3 #define N 100 4 #define INF 0x7fffffff 5 int n,m; 6 int d[N][N]; 7 int main() 8 { 9 int i,j,k 阅读全文
posted @ 2012-05-01 22:22 BeatLJ 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目链接题目大意:给定一个无向图,指定2个起点s1和s2和一个终点t,2个人分别从s1和s2出发,目的地是t,求两人的最短路径的最大公共长度(在保证两人均走最短路的前提下使两人一起走的路径最长)。分析:只要两人会合后,就一定会一起走完剩下的全程。所以大体思路是枚举可能的会合点,在判断某个点是否是可能的会合点时,判断这个点是否都是两个人的最短路径上的点即可。求最短路时用到dijkstra。View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define N 1000 4 #define INF 0x7fffff 阅读全文
posted @ 2012-05-01 21:23 BeatLJ 阅读(251) 评论(0) 推荐(0) 编辑