摘要:
删除A、B点之间的连线,然后求两点间的最短路,如果有最短路,加上A、B之间的长度求最小值,就是所要求的最短环。但是还要求输出路径,我是用Spfa求最短路的,同时记录路径。用这种方法做完之后,看到discuss里有许多用floyd求最短环的,就上网搜了一下。原来可以直接用floyd在O(n^3)的时间里求最短环,但是这个标记路径有点麻烦,最终也没想出比较好的记录路径的方法,但是的确求出了最短环。spfa求最短路算法:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#includ 阅读全文
摘要:
题意:航空公司有p名飞行员,n条航线,每条航线上都必须有两名飞行员完成,一名正驾驶员,一名副驾驶员,公司规定,正驾驶员的工作年龄要比副驾驶员的多一年,现在给出你n条航线上驾驶员的编号,但是不知道谁是正驾驶,谁是副驾驶,求出这个公司所有驾驶员工作年龄的最大差值,最大差值不得大于50,如果不能满足条件就输出-1 。思路:建图,每条航线上的正副驾驶之间连线,如果这是一个连通图,这直接有bfs枚举每一个点为起点,然后判断是否成立。如果不是连通图,先用dfs标记一下每个点属于那个连通图,然后用bfs判断每个连通图是否满足条件,如果都满足,则最大差值为49 ,如不满足则输出-1 。代码:View Code 阅读全文