hdu 1162 Eddy's picture
2011-12-02 19:45
211 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1162
最小生成树。。。纯模版。。
最小生成树。。。纯模版。。
#include<iostream> #include<cmath> #define N 999999 double map[101][101]; int visited[101]; double mark[101]; int n; using namespace std; double dit (double x1,double y1,double x2, double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double prim() { int i,j,k; double sum=0,min; memset(mark,0,sizeof(mark)); memset(visited,0,sizeof(visited)); k=1; visited[k]=1; for(i=2;i<=n;i++) { mark[i]=map[k][i]; //计算k到各顶点的距离 } min=N; for(i=1;i<=n-1;i++) { for(j=1;j<=n;j++) if(mark[j]<min&&!visited[j]) { min=mark[j]; k=j; } visited[k]=1; for(j=1;j<=n;j++) { if(mark[j]>map[k][j]&&!visited[j]) mark[j]=map[k][j]; } sum+=min; min=N; } return sum; } int main() { int i,j; double x[101],y[101]; while(cin>>n) { for(i=1;i<=n;i++) cin>>x[i]>>y[i]; memset(map,0,sizeof(map)); for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) { map[i][j]=map[j][i]=dit(x[i],y[i],x[j],y[j]); } } printf("%.2lf\n",prim()); } return 0; }
相关文章推荐
- HDU 1162 Eddy's picture MST(基础)
- HDU 1162 Prim
- hdu 1162(Kruskal)
- hdu 1162 Eddy's picture(最小生成树算法)
- hdu 1162
- hdu 1162(最小生成树)
- hdu 1162 Eddy's picture(最小生成树)
- hdu1162 Eddy's picture(prim)
- HDU 1162 Eddy's picture(MST)
- hdu 1162
- hdu 1162 Eddy's picture
- HDU1162-Eddy's picture(最小生成树)
- HDU 1162 Prim
- HDU 1162 Eddy's picture
- hdu 1162
- hdu 1162
- HDU 1162 Eddy's picture (Kruscal最小生成树)
- hdu-1162 Eddy's picture
- Hdu 1162 Eddy's picture【最小生成树】
- 最小生成树(模板题)Eddy's picture HDU - 1162