pku1751———highways
来源:互联网 发布:在淘宝开个店要多少钱 编辑:程序博客网 时间:2024/05/18 14:24
这道题目是用Prim算法实现的,用Prim的话最关键的地方就是怎么处理已有的路线,如果把它们当做已经在最小生成树里的话就面临一个问题,那便是:已有路线不是连通的,肯定A不了,Oh,天呐,那该怎么办呢?凉拌!呵呵,玩笑哈......记得有位科学家说过我们要会做梦,此处表示灰常赞同,因为哥就是梦里想到的呀。那到底咋做呢?把它们之间距离设为0就O啦!这样它们就成了必选路径了对吧,完了咱再用一个控制变量if(d[min]!=0)打印就了事啦!
今天一早过来花了十几分钟修改一下直接A啦,SO COOL,HUH?哈不多说了,直接上代码了,相信它会比我解释得清楚。
#include"stdio.h"#define N 755#define Max 0x7fffffff int n;int d[N],p[N][2],weight[N][N],whoTo[N];char inTree[N];void updateDistances(int target){ int i; for(i=1;i<=n;i++)if(d[i]>weight[target][i]){ d[i]=weight[target][i]; whoTo[i]=target; } }int main(){ int i,j,m,a,b,key,treeSize; scanf("%d", &n); for(i=1;i<=n;i++){scanf("%d%d",&p[i][0],&p[i][1]); inTree[i]=0;d[i]=Max;} for(i=1;i<=n;i++) for(j=1;j<=i;j++){ weight[i][j]=(p[i][0]-p[j][0])*(p[i][0]-p[j][0]) +(p[i][1]-p[j][1])*(p[i][1]-p[j][1]); weight[j][i]=weight[i][j]; } for(i=1;i<=n;i++)weight[i][i]=Max; scanf("%d",&m); for(i=1;i<=m;i++){scanf("%d%d",&a,&b); weight[a][b]=0;weight[b][a]=0; } inTree[1]=1; updateDistances(1); for(treeSize=1; treeSize<n; ++treeSize){ int min=-1; for(i=1;i<=n;++i)if(!inTree[i]) if((min==-1)||(d[i]<d[min])) min=i; if(d[min]!=0)printf("%d %d\n", whoTo[min], min); inTree[min]=1; updateDistances(min); } system("pause"); return 0;}
- pku1751———highways
- poj1751——Highways
- POJ2485——Highways
- poj 2485——Highways
- poj——2485——Highways
- 算法学习【7】—— 1090. Highways
- POJ2485——Highways(最小生成树)
- ACM-最小生成树之Highways——poj2485
- Highways(prim——最小生成树)
- prim求最小生成树——Highways
- poj2485——Highways(最小生成树+prim)
- 2017.8.7——最小生成树HIGHWAYS
- POJ 2485 Highways【最小生成树最大权——简单模板】
- poj1751——Highways(部分确定的最小生成树)
- Highways
- Highways
- Highways
- Highways
- Unity3D实现动态加载游戏资源(转)
- 【Android Training - 09】高效地显示Bitmap图片 [ Lesson 5 - 使用ViewPager与GridView显示图片 ]
- xshell 自动登录与自动跳转
- Heart Break Kid
- STL中map用法详解
- pku1751———highways
- href
- row cache objects latch研究
- jax-rpc、jax-ws和 axis、xfire的联系和区别
- 游戏服务器端如何设计和实现可视化工具
- 我是这样使用Ubuntu的
- 常见的几个Qt编程问题的处理(转自QT中文论坛)
- 各种数据库连接方式
- Oracle定时执行存储过程