最小生成树Prim模板
2012-02-23 09:13
435 查看
Prim适用于稠密图,对于给定坐标求最小生成树的题目再合适不过。
e.g.
畅通工程再续
http://acm.hdu.edu.cn/showproblem.php?pid=1875
Freckles
http://poj.org/problem?id=2560
这里贴出Hdu 1875 的代码
e.g.
畅通工程再续
http://acm.hdu.edu.cn/showproblem.php?pid=1875
Freckles
http://poj.org/problem?id=2560
这里贴出Hdu 1875 的代码
#include "iostream" #include "stdio.h" #include "math.h" #include "map" #include "vector" #include "queue" #include "memory.h" #include "algorithm" #include "string" using namespace std; #define N 105 #define INF 1<<30 struct NODE { double x,y; }; NODE island ; bool visited ; double dis ; int S_set ; double DIS(NODE a,NODE b) { double x= sqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y)); if(x<10||x>1000) return INF; return x; } int main() { int cas,i,j,n,k; scanf("%d",&cas); while(cas--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%lf%lf",&island[i].x,&island[i].y); memset(dis,-1,sizeof(dis)); for(i=1;i<=n;i++) for(j=1;j<i;j++) dis[i][j]=dis[j][i]=DIS(island[i],island[j]); memset(visited,false,sizeof(visited)); visited[1]=true; S_set[1]=1; double ans=0; bool flag=true; for(i=2;i<=n;i++) //n-1 roads { double minn=INF; int point; //find the shortest path for(j=1;j<i;j++)//have i points in S_set currently { int cur_p=S_set[j]; for(k=1;k<=n;k++) { if(cur_p!=k&&minn>dis[cur_p][k]&&dis[cur_p][k]>0&&!visited[k]) { minn=dis[cur_p][k]; point=k; } } } if(minn==INF) { flag=false; break; } ans+=minn; S_set[i]=point; visited[S_set[i]]=true; } if(!flag){ cout<<"oh!"<<endl; continue;} printf("%.1lf\n",ans*100); } }
相关文章推荐
- poj 1258 Agri-Net ( 最小生成树[模板题]--prim )
- POJ 1278 Agri-Net 最小生成树模板题(Prim 与 Kruskal)
- 最小生成树模板(prim+kruskal+prim的优化)
- 最小生成树prim模板
- 个人模板 prim 最小生成树
- HDU 1233 还是畅通工程 最小生成树 Prim模板的应用
- 最小生成树模板(Kruskal和prim)
- 最小生成树--prim+优先队列优化模板
- hdu1162(最小生成树 prim or kruscal模板)
- 【2018寒假集训Day 8】【最小生成树】Prim和Kruskal算法模板
- 最小生成树(kruskal模版 Prim模板)
- Agri-Net(最小生成树模板 prim)
- 最小生成树prim模板
- 最小生成树-prim 模板
- HDU1102-Constructing Roads-最小生成树(prim模板题)
- poj 1258 【最小生成树】【prim】【纯模板】
- 最小生成树(prim&kruskal)模板
- 51nod 1212 无向图最小生成树(prim,kruskal模板)
- poj 2485 <prim《模板》求最小生成树>
- 最小生成树之prim模板题