摘要: Dijkstra:固定一个顶点为源点,求源点到其他顶点的最短路径。算法执行步骤:转载于:http://2728green-rock.blog.163.com/blog/static/43636790200901211848284/ 阅读全文
posted @ 2012-07-22 17:16 calmound 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题意:求从1-n所能承受的最大重量是多少,其最大重量就是1-n通路的最小边分析:求最大生成树的最小边,排序的时候按照权值从大到小派,然后生成树,知道找到1-n的通路就可以了#include<stdio.h>#include<algorithm>using namespace std;const int MAXN=1005;const int INF=0x7fffffff;int father[MAXN];int rank[MAXN];int ans,n,m;struct Edge{ int u,v; int w;}edge[100000];//这里数组开小了re,题目并 阅读全文
posted @ 2012-07-20 22:49 calmound 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 一道很朴素的最小生成树,不过通过此题知道了,当n已经决定的情况下,若n个点无法构成最小生成树的话,最终得到ans无法得到精确的值,他会将无穷大的路径加入。#include#includeconst int MAXN=110;const int INF=9999999;int mat[MAXN][MA... 阅读全文
posted @ 2012-07-20 14:41 calmound 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题意:若最小生成树唯一则输出权值和,若不唯一输出NotNot Unique!运用prim算法将最小生成树求出,然后在依次枚举删除最小生成树中的每一条边,判断是否还能构成一个新的最小生成树,且权值和与初始的权值和相等,若能构成则不唯一#include#include#includeusing name... 阅读全文
posted @ 2012-07-19 13:52 calmound 阅读(3200) 评论(0) 推荐(0) 编辑
摘要: 题意:将n个人分组,找出受感染的人有多少,当一个人感染,他所在的那一组均视为受感染。分析:运用并查集将相关联的人都分到一个集合,然后判断每个人是否和0在同一个集合,若在则视为受感染,否则不是#includeconst int MN=30010;int father[MN],rank[MN],a[MN... 阅读全文
posted @ 2012-07-17 17:30 calmound 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一定的格子的棋盘,一匹马是否可以遍历完全整个棋盘View Code 1 #include 2 #include 3 const int MAXN=30; 4 5 //国际象棋纵是数字,横是英文 6 struct Node//用于最后字典序输出 7 { 8 int x,y; 9 ... 阅读全文
posted @ 2012-07-16 21:08 calmound 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 经过+1,-1,*2的操作,使第一个数等于第二个数求最少步骤都是用的广搜#include#include#includeusing namespace std;const int MAXN=100010;int step[MAXN],vis[MAXN];queueQ;int BFS(int n,in... 阅读全文
posted @ 2012-07-16 15:39 calmound 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 初始思路: 是定义了两个数组,一个储存进去车辆的信息,另一个储存的是出去的车辆的信息,这样导致每次进去都需要查找车辆以前是否出去过,若出去过需要清楚出去信息,若车辆需 要 出去,又要查找该车辆是否进去过,若进去过要清楚进去的信息,以至于最终也不知道哪里出错了。后来思路: 借鉴了别人的代码,恍然... 阅读全文
posted @ 2012-07-16 10:26 calmound 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题意: 从初始房间到达终止房间需要经过一系列的房间,没经过一个房间会得到一个价值,从一个房间到达另一个房间同时需要消耗一定的时间,在规定的时间内从初始到达终止房间 所能达到的最大值是多少#include#include#define INF 99999999const int MAXN=1... 阅读全文
posted @ 2012-07-16 10:24 calmound 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 将顶点进行排序,去掉度m最大的点,依次让其后m个数减1,若后面的某个顶点出现负数的情况或后面的数的个数少于最大的度#include#include#includeusing namespace std;struct EDGE{ int d;//储存度数 int num;//储存位置}ed... 阅读全文
posted @ 2012-07-14 12:52 calmound 阅读(719) 评论(0) 推荐(1) 编辑