uva10397 Connect the Campus
来源:互联网 发布:clock 算法 编辑:程序博客网 时间:2024/06/16 15:41
题意:
最小生成树,有的边已经不用考虑:
代码:
#include<cstdio> #include<cstring> #include<cmath> #define N 760 double w[N][N],x[N],y[N],key[N]; int pre[N], hash[N], n, m; inline double getDist(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double prim() {double u = 0xFFFFFFF;double sum = 0;memset(hash, 0, sizeof(hash));for(int i=1; i<=n; i++) {key[i] = w[1][i];}hash[1] = 1;for(int i=2; i<=n; i++) {u = 0xFFFFFFF;int x;for(int j=1; j<=n; j++) {if(!hash[j]) if(key[j]<u) {u = key[j];x = j;}}sum += key[x];hash[x] = 1;for(int j=1; j<=n; j++) {if(key[j] > w[x][j]) {key[j] = w[x][j];}}}return sum;}int main(){int u, v;while(~scanf("%d", &n)) {for(int i=1; i<=n; i++)scanf("%lf%lf", &x[i], &y[i]);for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)if(i != j) {w[i][j] = getDist(x[i], y[i], x[j], y[j]);}scanf("%d", &m);for(int i=0; i<m; i++) {scanf("%d%d", &u, &v);w[u][v]=w[v][u]=0;}printf("%.2f\n", prim());}return 0;}
0 0
- UVA10397- Connect the Campus
- UVa10397 Connect the Campus
- uva10397 Connect the Campus
- uva10397 - Connect the Campus(连接校园)
- UVA10397 - Connect the Campus(最小生成树+并查集)
- 10397 - Connect the Campus
- uva_10397 Connect the Campus
- 10397 - Connect the Campus
- 10397 - Connect the Campus
- Connect the Campus
- UVaOJ 10397 - Connect the campus
- uva 10397 - Connect the Campus
- UVA 10397 - Connect the Campus
- UVa 10397 - Connect the Campus
- Uva 10397 - Connect the Campus
- UVa 10397 - Connect the Campus
- UVa 10397: Connect the Campus
- Uva - 10397 - Connect the Campus
- ContentProvider和app间传递数据
- 搞懂php apache mysql tomcat
- java复习总结3
- 求解n皇后
- 开启Mysql远程访问权限
- uva10397 Connect the Campus
- MongoDB的c++封装api
- springAOP术语简介
- 集训队专题(9)1004 See you~
- [BZOJ 1119][POI 2009]SLO
- 单向链表创建
- 嘿嘿,今天突然想起了,我还忘记了有个CSDN的博客没有来
- redis基本命令之二:集合、有序集合
- PAT (Advanced Level) Practise 1037 Magic Coupon (25)