hdu 1162
2017-08-13 11:01
148 查看
主题思想,最小生成树,prim算法
prim算法最好的情况下使用优先队列,所有边的集合E每次输出距离最小生成树节点距离最小的边。到MST 集合中,MST代表组成最小生成树的集合。
这里利用循环来代替优先队列。 核心思想还是每次选取最小的。
最小生成树代码
AC 代码
prim算法最好的情况下使用优先队列,所有边的集合E每次输出距离最小生成树节点距离最小的边。到MST 集合中,MST代表组成最小生成树的集合。
这里利用循环来代替优先队列。 核心思想还是每次选取最小的。
最小生成树代码
double prim(){ vector<int> v; double ans=0; memset(visited,false,sizeof(visited)); v.push_back(0); visited[0]=true; while(true){ if(v.size()==n)break; int len=v.size(); double mm=INF; int pre=0; int index=-1; //mst set for(int i=0;i<len;i++){ //all edge set for(int j=0;j<n;j++){ // e-mst set if(j!=v[i]&&!visited[j]){ if(dist[v[i]][j]<mm){ mm=dist[v[i]][j]; pre=v[i]; index=j; } } } } v.push_back(index); visited[index]=true; ans+=dist[pre][index]; } return ans; }
AC 代码
#include <iostream> #include<cstdio> #include<cstring> #include<queue> #include<cmath> const int maxn=105; const double eps=1e-8; const double INF=1<<30-1; using namespace std; struct Point{ double x; double y; }; Point point[maxn]; double Distance(Point a,Point b){ double dist; dist=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); return dist; } int n; double dist[maxn][maxn]; bool visited[maxn]; double prim(){ vector<int> v; double ans=0; memset(visited,false,sizeof(visited)); v.push_back(0); visited[0]=true; while(true){ if(v.size()==n)break; int len=v.size(); double mm=INF; int pre=0; int index=-1; for(int i=0;i<len;i++){ for(int j=0;j<n;j++){ if(j!=v[i]&&!visited[j]){ if(dist[v[i]][j]<mm){ mm=dist[v[i]][j]; pre=v[i]; index=j; } } } } v.push_back(index); visited[index]=true; ans+=dist[pre][index]; } return ans; } int main() { while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%lf%lf",&point[i].x,&point[i].y); dist[i][i]=0; } for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ dist[i][j]=Distance(point[i],point[j]); dist[j][i]=dist[i][j]; } } //prim double ans=prim(); printf("%.2lf\n",ans); } return 0; }
相关文章推荐
- hdu 1162 Eddy's picture(最小生成树Kruskal)
- HDU 1162 Eddy's picture(点连通:最小生成树)
- HDU1162-Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture
- hdu 1162 Eddy's picture 基础最小生成树★
- 杭电Hdu 1162 Eddy's picture
- hdu 1162 最小生成树
- HDU 1162 prime+邻接矩阵
- hdu 1162 Eddy's picture
- hdu 1162
- hdu 1162 Eddy's picture
- hdu 1162(最小生成树)
- HDU 1162 Eddy's picture
- HDU1162-Eddy's picture-最小生成树(prim算法模板)
- hdu 1162
- hdu 1162 Eddy's picture(最小生成树)
- hdu1162——初学最小生成树
- Hdu-1162 Eddy's picture
- hdu 1162
- hdu-1162 Eddy's picture