
图论
文章平均质量分 76
Matrix1254
爱代码,爱加班,爱咖啡可乐
爱挑战,爱钻研,爱打游戏
爱晚起,也爱工作到深夜。
我擅长技术,崇尚简单和懒惰
我神秘而孤僻,沉默而爱憎分明
我行我素,我是程序员
展开
-
hdu 1874 畅通工程续
dp #include#define INT_MAX 0xffffff#define NUM 205int map[NUM][NUM];int dist[NUM];int visited[NUM];int n,m;void dijkstra(int v){ int i,j,k; for(i=0;i<n;i++) { if(map[v][i]原创 2012-12-15 00:33:16 · 470 阅读 · 0 评论 -
hdu 一个人的旅行
dp#include#define INT_MAX 0xffffff#define NUM 1005int map[NUM][NUM];int dist[NUM],linkarr[NUM], wantarr[NUM];int visited[NUM];int n,m;void dijkstra(int v){ int i,j,k; for(i=1原创 2012-12-15 16:18:33 · 501 阅读 · 0 评论 -
pat 1034 Head of a Gang
题意是要求总共有几个集合,每个集合权重最大的是哪个,以及每个集合中结点个数。一开始老想用并查集来做,发现实现起来很困难。参考网上代码,发现可以用DFS遍历,数出每个分支的结点个数。其中map的迭代器的使用得注意。还有,若一个gang中同时有多个相同的最大值,取字母序最小的。虽然不加这点,也能过,但为了健壮性,加上吧。 AC代码:#include#include#include原创 2013-03-06 11:10:34 · 1924 阅读 · 0 评论 -
pat 1003 Emergency (值得重点回顾)
一开始看错题意,题意是要求单源点对最短路径数和最大的点权重之和。知道要用dijskra算法,但为了求最短路径数,还得用深搜,依次把点加入集合中,若路径长度=最短路径值时,路径数+1。同时求出最大的点权重之和。递归函数{出口条件处理(最低级的情况);return ...;从第1列的8个位置{依次尝试设置格子及限制区域向下级递归复原上一次尝试}};A原创 2013-02-26 21:44:37 · 2271 阅读 · 0 评论 -
pat 1021 Deepest Root
题目是要判断图是否都连接构成树,求使树高最大的所有的根,实际上求图上两点间最大距离。我的思路是依次取各点进行DFS,记下各点可达的最大深度,再在其中取最大值,若各点的最大深度等于该值,该点为所求。若最大深度不等于n-1,则不是一棵树,再用并查集判断有几部分。可能思路有问题,WA了N久。参考网上程序,发现树的最长路径其实有个很方便的求法。任取一个点x,求出距离x最远的一个点y,然后求出距离y最远的一原创 2013-02-28 22:59:04 · 1050 阅读 · 0 评论 -
pat 1030 Travel Plan
虽然是30分题,其实是简单题,只怪自己不清晰,想到什么dijskra和bellmanford的去了,浪费了不少时间。后来直接用DFS解决。//1030 23:00#includeconst int NUM=505;const int INF=0x7fffffff;int map[NUM][NUM],cost[NUM][NUM];int visit[NUM];in原创 2013-03-03 01:32:18 · 706 阅读 · 0 评论