2011年9月24日
摘要: HDU_1232 直接应用并查集,然后再统计一共有多少组节点即可。#include<stdio.h>#include<string.h>int p[1010],hash[1010];int find(int x){ return p[x]==x?x:(p[x]=find(p[x])); }int main(){ int i,j,x,y,tx,ty,N,M,ans; while(1) { scanf("%d",&N); if(N==0) break; scanf("%d",&M); for... 阅读全文
posted @ 2011-09-24 23:10 Staginner 阅读(162) 评论(0) 推荐(0) 编辑
摘要: HDU_1245 这个题目首先要遍历一遍所有的点,将第一次可以到达的点加入到SPFA的队列之中,并设定相应的d[]及step[]的值,其余的d[i]和step[i]都初始化成INF,之后便求出到各个点的最短路以及最短的步数,最后再扫描一遍所有点,把可以跳出lake的点做进一步的处理即可。#include<stdio.h>#include<string.h>#include<math.h>double d[110],D,x[110],y[110];int step[110],q[110],inq[110],reach[110];double dis(int i 阅读全文
posted @ 2011-09-24 22:56 Staginner 阅读(374) 评论(0) 推荐(0) 编辑
摘要: HDU_1385这个题目又使我获益不少。由于后续的查询工作都是对同一个图而言的,因此用Floyd算法扫一遍图就可以了。为了辅助打印路径,我们引入一个数组path[i][j]表示由i到j首先要经过的城市。一开始把所有的path[i][j]都初始化成j并没有什么不妥,尽管其中有些path[i][j]的值是错误的,但凡是错误的值,在之后运算的过程中都不用到,因为如果path[i][j]是错误的,那么必然f[i][j]是INF。#include<stdio.h>#include<string.h>int f[1010][1010],path[1010][1010],b[1010 阅读全文
posted @ 2011-09-24 00:43 Staginner 阅读(219) 评论(0) 推荐(0) 编辑