prime模板题HDU1875
2014-07-06 20:06
127 查看
裸题啊!!!!!! 这种题目开始的时候怎么会想到最短路的呢。很明显是到最小生成树啊!!! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> #include <malloc.h> #include <ctype.h> #include <math.h> #include <string> #include <iostream> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <deque> #include <set> #include <map> using namespace std; #define arr 105 #define inf 200000000.0 double dis[arr][arr]; int vis[arr]; double g[arr]; int c; struct node{ int x,y; }a[arr]; double Dis(int x1,int y1,int x2,int y2){ double len; len = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); return len; } void prime(){//算法的复杂度是n*n int i,j; int mark=2; double sum=0; memset(vis,0,sizeof(vis)); for(i=0;i<c;i++){ g[i] = dis[0][i];//初始化g这个数组,然后最后的时候来 } vis[0] = 1; double tmp; int k; for(i=1;i<c;i++){//因为循环一次只能将一个数字连起来,由于第一个字母已经好了,所以直接从1开始循环。 tmp = inf; for(j=0;j<c;j++){ if(tmp>g[j] && vis[j]==0){//与找的方向无关 tmp = g[j]; k = j; } } if(tmp == inf){ mark = 1; break; } else{ vis[k] = 1; sum+=tmp*100;//最好每步都要写,因为可以提高精度 for(j=0;j<c;j++){ if(dis[k][j]<g[j] && vis[j]==0){ g[j] = dis[k][j]; } } } } if(mark == 1){ printf("oh!\n"); } else{ printf("%.1lf\n",sum); } } int main(){ int t,i; while(~scanf("%d",&t)){ while(t--){ memset(g,0,sizeof(g)); memset(dis,0,sizeof(dis)); scanf("%d",&c); for(i=0;i<c;i++){ scanf("%d%d",&a[i].x,&a[i].y); } int j; for(i=0;i<c;i++){ for(j=0;j<c;j++){ dis[i][j] = inf; } } for(i=0;i<c;i++) dis[i][i] = 0; double len; for(i=0;i<c;i++){ for(j=i+1;j<c;j++){ len = Dis(a[i].x,a[i].y,a[j].x,a[j].y); if(len>=10.0 && len<=1000.0){ dis[i][j] = dis[j][i] = len; } else{ dis[i][j] = dis[j][i] = inf; } } } prime(); } } return 0; }
相关文章推荐
- HDU1233 还是畅通工程(最小生成树模板题,Prime,kruskal算法)
- HDU 1016 Prime Ring Problem - DFS模板题
- POJ 1811 Prime Test 【快速判质+因子分解】【模板】
- UVa524 - Prime Ring Problem 枚举排列模板题
- SPFA,dijskra,prime,topu四种算法的模板
- HDU4135-Co-prime-数论(容斥原理-模板)
- 最小生成树模板(POJ 1258-prime+HDU 1233 Kruskal为例)
- POJ - 1811_Prime Test_miller-rabin模板&&polard_rho模板
- 关于Prime算法的从入门到升天的讲解(带模板)
- 最小生成树prime算法模板
- 最小生成树prime算法模板
- prime算法(最小生成树模板)
- prime模板
- PKU2485Prime模板低空飘过
- hdu 1002 prime 模板
- 最小生成树Prime算法(模板)
- HDU -- 4135 Co-prime【质因子分解+状压 + 容斥定理】+ 模板
- PKU1258,模板题,prime算法就可以直接套用这个模板
- poj 2485 Highways(prime算法模板)
- [prime模板]