博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 1203 Swordfish MST
阅读量:5062 次
发布时间:2019-06-12

本文共 1453 字,大约阅读时间需要 4 分钟。

大意:

给出一些点,求MST

把这几天的MST一口气发上来。

kruskal

#include
#include
#include
using namespace std;const int MAXN=101;const int INF=9999999;int fa[MAXN];struct point{ double x,y;}ship[MAXN];struct dot{ int x,y; double dis;}dis[MAXN*MAXN];int find(int cur){ return fa[cur]==cur?cur:fa[cur]=find(fa[cur]);}bool operator < (const dot &a,const dot& b){ return a.dis
prim

#include
#include
const int MAXN=101;const int INF=9999999;double map[MAXN][MAXN];double dis[MAXN];struct point{ double x,y;}ship[MAXN];void prim(int n){ for(int i=1;i<=n;i++) dis[i]=INF; bool vis[MAXN]={0}; int cur=1; vis[cur]=1; dis[cur]=0; int i,j; for(i=1;i<=n;i++) { double mini=INF; for(j=1;j<=n;j++) if(!vis[j] && dis[j] > map[cur][j]) dis[j]=map[cur][j]; for(j=1;j<=n;j++) if(!vis[j] && mini > dis[j]) mini=dis[cur=j]; vis[cur]=true; }}int main(){ int n,kase=1; while(~scanf("%d",&n),n) { if(kase!=1) printf("\n"); int i,j; for(i=1;i<=n;i++) scanf("%lf%lf",&ship[i].x,&ship[i].y); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { map[i][j]= map[j][i] = sqrt((ship[j].y -ship[i].y) *(ship[j].y -ship[i].y) + (ship[j].x -ship[i].x)*(ship[j].x -ship[i].x)); } } prim(n); double ans=0,ans2=0;//=map[a][b]; for(i=1;i<=n;i++) ans+=dis[i]; printf("Case #%d:\n",kase++); printf("The minimal distance is: %.2lf\n",ans); }}

转载于:https://www.cnblogs.com/murmured/p/5004183.html

你可能感兴趣的文章
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>
vue路由动态加载
查看>>
【原】UIWebView加载本地pdf、doc等文件
查看>>
iOS中ARC内部原理
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
你不得不了解的应用容器引擎---Docker
查看>>
easyui datagrid 弹出页面会出现两个上下滚动条处理办法!
查看>>
迭代器和生成器
查看>>
MYSQL分区表功能测试简析
查看>>
codevs 1080 线段树练习
查看>>
JS模块化库seajs体验
查看>>
Android内核sysfs中switch类使用实例
查看>>
POJ2288 Islands and Bridges(TSP:状压DP)
查看>>
POJ3250 Bad Hair Day(单调栈)
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
IOS开发UI篇--UITableView的自定义布局==xib布局
查看>>