摘要: 题目大意:计算最小生成树有两种算法:一种是kruskal算法,另一种是与之相反的:如果图中存在环,去掉权重最大的边,直到不存在环。输出去掉的那些边。 可以用kruskal算法解决,在判断一条边时如果加入该边能形成环,保存该边即可。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 1100 6 typedef pair ii; 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x]=find(p... 阅读全文
posted @ 2013-09-17 22:24 xiaobaibuhei 阅读(249) 评论(0) 推荐(0)
摘要: 题目大意:政府为了减小开支决定关闭一些路灯,同时保证照亮的路能连接所有路口。 又是一个MST问题,Kruskal算法,不过数据规模比较大,又Submission Error了...扔这吧... 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef pair ii; 6 #define MAXN 200100 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x]=find(p[x]);13 }14 15 in... 阅读全文
posted @ 2013-09-17 21:54 xiaobaibuhei 阅读(219) 评论(0) 推荐(0)
摘要: 题目大意:有n个网站,由m条线路相连,每条线路都有一定的花费,找出连接所有线路的最小花费。 最小生成树问题(Minimal Spanning Tree, MST),使用Kruskal算法解决。 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef pair ii; 6 #define MAXN 1000100 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x] = find(p[x]);13 }14 15... 阅读全文
posted @ 2013-09-17 20:08 xiaobaibuhei 阅读(373) 评论(0) 推荐(0)
摘要: 题目大意:给你一个二维迷宫,给定入口和出口,找出最短路径。 无权图上的单源最短路,用BFS解决。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 1100 6 7 int G[MAXN][MAXN], dist[MAXN*MAXN]; 8 const int dir[4][2] = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}}; 9 10 int main()11 {12 #ifdef LOCAL13 freopen("in", "r", 阅读全文
posted @ 2013-09-17 18:30 xiaobaibuhei 阅读(352) 评论(0) 推荐(0)
摘要: 题目大意:一座楼有100层,编号0-99,有n个电梯,每个电梯有不同的速度,并且只在指定的楼层停,在某一层如果有多个电梯停,在两个电梯间转移需要1分钟,求出从0层出发到达k层的所用的最短时间。 本来是正常的单源最短路问题,可是电梯转移花费的时间使得问题复杂了。刚开始是把一个节点扩展成两个节点,一个进一个出,在进出两个节点间加上60s的开销,纠结的好久才憋出来(犯了好多错误...浪费了好长时间),结果却WA了,用别人的测试用例结果也对,忽然就想到可能最终要到0层(写代码时考虑到了,可是认为不会这么干,也就没多写),处理完0之后,就好了...-_-|| 1 #include 2 #incl... 阅读全文
posted @ 2013-09-17 16:27 xiaobaibuhei 阅读(221) 评论(0) 推荐(0)