UVA216 ——dfs
来源:互联网 发布:网站源代码怎么修改seo 编辑:程序博客网 时间:2024/06/06 01:55
代码如下,注释很清楚,稍微学过数据结构的应该可以看懂
#include<iostream>#include<cmath>#include<cstring>#include<stdio.h>using namespace std;#define MAXNUM 9int x[MAXNUM],y[MAXNUM];//记录坐标double dis[MAXNUM][MAXNUM];//记录两点间距离,作为图的邻接矩阵int ans_order[MAXNUM];//存储dfs遍历节点的顺序int tem_order[MAXNUM];//临时存储dfs遍历节点的顺序double min_dis = 10000000;//最短距离int visit[MAXNUM];//记录节点是否被访问int n ;double distance(int x1,int y1,int x2,int y2){//两点间距离 return sqrt(pow( x1-x2 ,2)+pow(y1-y2,2));}void dfs(int cur){//对图进行第cur深度的深搜 if ( cur == n ){//如果深度超过图的节点个数,则对当前深搜所得到的连通图进行判断 double sum = 0 ; for (int i = 0 ; i < n-1 ; i ++){//求当前所得连通图的代价,即题目题目中的step sum+=dis[tem_order[i]][tem_order[i+1]]; } if (sum < min_dis){ min_dis = sum ; memcpy(ans_order,tem_order,sizeof(tem_order)); } }else{//对图进行第cur深度的深搜 for( int i = 0 ; i < n ; i++){//遍历节点,找到下一个没有被访问的节点继续深度搜索 if(!visit[i]){ visit[i] = 1 ; tem_order[cur] = i ;//当前深搜顺序的第cur个节点是i dfs(cur+1);//对图进行第cur+1深度的深搜 visit[i] = 0;//相当于该节点退栈 } } }}int main (){ int time = 0; while (cin>>n && n!=0){ time ++ ; for (int i = 0 ; i < n ; i++){//输入并计算距离 scanf("%d %d",&x[i],&y[i]); visit[i] = 0 ; for (int j = 0 ; j < i ; j++){ dis[i][j] = dis[j][i] = distance(x[j],y[j],x[i],y[i]); } } min_dis = 1000000; dfs(0); printf("**********************************************************\n"); printf("Network #%d\n",time); for (int i = 0 ; i < n-1; i++){ printf("Cable requirement to connect (%d,%d) to (%d,%d) is %.2lf feet.\n",x[ans_order[i]],y[ans_order[i]],x[ans_order[i+1]],y[ans_order[i+1]],dis[ans_order[i]][ans_order[i+1]]+16); } printf("Number of feet of cable required is %.2lf.\n",min_dis+16*(n-1)); } return 0;}
0 0
- UVA216 ——dfs
- Uva216—— Getting in Line
- UVa216
- uva216
- uva216
- uva216
- UVA216
- UVA216 Getting in Line
- UVa216 Getting in Line
- UVA216-Getting in Line
- uva216 c++回溯法
- uva216 Getting in Line
- uva216 Getting in Line
- uva216 Getting in Line
- (要经常看)uva216
- hdu1175——DFS
- 迷雾——dfs
- 笔记——DFS
- 软件开发工具(六)--宏观总结
- httpd反向代理
- java环境变量
- [BZOJ3238][Ahoi2013]差异
- 编写android HAL代码
- UVA216 ——dfs
- Linux I2C设备驱动编写
- Java导论(一)
- 总结_高效能人士的七个习惯
- eightQueen1.0
- 数据库设计(4)-高级ER模型构建
- 第十章 方差分析
- UIday0603:UIImageView的属性和用法 Tom猫举例
- 免费自学Cocos2d-x3.0final2014原创视频教程(56集)(适用于Cocos2d-x3.1 Cocos2d-x3.2版本全)