Hdu oj 1875 畅通工程再续
来源:互联网 发布:vb6 连接mysql数据库 编辑:程序博客网 时间:2024/05/14 17:00
题目:点击打开链接
分析:代码一为AC的代码,代码二为自己在代码一的基础上优化的代码,测试多种结果都正确,但是确不能AC,后来发现,优化之后,出现了问题。
代码一:
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>using namespace std;struct stu{int x,y;double d;}a1[10000];struct stl{int x,y;}a2[110];int per[10000];int a;void init()//初始化函数 {int i;for(i=0;i<=a;i++)per[i]=i;}int find(int x){if(x==per[x])return x;return per[x]=find(per[x]);}bool join(int x,int y){int fx=find(x),fy=find(y);if(fx!=fy){per[fx]=fy;return true;}elsereturn false;}double ds(int x1,int x2,int y1,int y2){double a=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);return sqrt(a);}int cmp(stu x,stu y){return x.d<y.d;}int main(){int t;scanf("%d",&t);while(t--){int i,j,k;double sum=0,distance=0;scanf("%d",&a);for(i=0;i<a;i++)scanf("%d%d",&a2[i].x,&a2[i].y);init();k=0;for(i=0;i<a;i++) //存编号 for(j=i+1;j<a;j++){distance=ds(a2[i].x,a2[j].x,a2[i].y,a2[j].y);//注意别把下标搞错了。 a1[k].x=i;a1[k].y=j;a1[k].d=distance;k++;}sort(a1,a1+k,cmp);for(i=0;i<k;i++){if(a1[i].d>=10&&a1[i].d<=1000&&join(a1[i].x,a1[i].y))sum+=a1[i].d;}k=0;for(i=1;i<a;i++)//如果联通只存在一个父节点 {if(find(i)!=find(i-1))k=1;}if(k)printf("oh!\n");elseprintf("%.1lf\n",sum*100);}return 0;}
代码二:
#include<stdio.h>#include<string.h>#include<math.h>#define INF 0xffffstruct stu{int x,y;double d;int link;}a1[110];int per[110];int a;void init(){int i;for(i=1;i<=a;i++){per[i]=i;a1[i].d=INF;a1[i].link=0;}}int find(int x){if(x==per[x])return x;return per[x]=find(per[x]);}bool join(int x,int y){int fx=find(x),fy=find(y);if(fx!=fy){per[fx]=fy;return true;}elsereturn false;}double ds(int x1,int x2,int y1,int y2){double a=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);return sqrt(a);}int main(){int t;scanf("%d",&t);while(t--){int i,j,k;double sum=0,distance=0;scanf("%d",&a);for(i=1;i<=a;i++)scanf("%d%d",&a1[i].x,&a1[i].y);init();for(i=1;i<=a;i++)//与代码一不同的是,连接的时候,确保每一次最短的相连,但是确不能确保把所有的点都连接起来。 {for(j=1;j<=a;j++){if(j!=i){distance=ds(a1[i].x,a1[j].x,a1[i].y,a1[j].y);if(distance>1000||distance<10)distance=INF;if(a1[i].d>distance){a1[i].d=distance;a1[i].link=j;}}}}k=0;for(i=1;i<=a;i++){if(a1[i].link!=0) if(join(i,a1[i].link))sum+=a1[i].d;}for(i=2;i<=a;i++){if(find(i)!=find(i-1))k=1;}if(k)printf("oh!\n");elseprintf("%.1lf\n",sum*100);}return 0;}
0 0
- Hdu oj 1875 畅通工程再续
- Hdu oj 1874 畅通工程续
- HDU-OJ-1232 畅通工程
- Hdu oj 1232 畅通工程
- Hdu oj 1863 畅通工程
- HDU 1875 畅通工程再续
- HDU 1875 畅通工程再续
- acm hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续 (kruskal)
- hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- ZOJ一览表
- hdoj.1421 搬寝室【动态规划,DP】 2015/08/12
- Ice_cream’s world III
- Shell脚本学习笔记
- Android入门第十六篇之Style与Theme
- Hdu oj 1875 畅通工程再续
- ZOJ1157, POJ1087,UVA 753 A Plug for UNIX (最大流)
- UI_Target-Action
- ural1057 Amount of Degrees数位统计入门题
- Esfog_UnityShader教程_UnityShader语法实例浅析
- Websphere为datasource设置resultSetHoldability
- 照片墙设计与制作
- java连接MySQL数据库
- 安卓开发中的折线图