比赛时没想明白 只想找到距离最短的两个点 然后再找其他点的关系

始终过不了  转别人的代码 即求最短的两条不共点的线段之和即为答案

http://www.cnblogs.com/54zyq/p/3203649.html

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
struct Point
{
    int x,y;
}node[4];
double dis(Point a,Point b)
{
    return sqrt( (double)(a.x-b.x)*(a.x-b.x)+(double)(a.y-b.y)*(a.y-b.y) );
}


int main()
{
//    freopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);
    while(scanf("%d%d",&node[0].x,&node[0].y)==2)
    {
        for(int i=1;i<4;i++)
            scanf("%d%d",&node[i].x,&node[i].y);
        double d1=dis(node[0],node[1]);
        double d2=dis(node[1],node[2]);
        double d3=dis(node[2],node[3]);
        double d4=dis(node[0],node[3]);
        double d5=dis(node[0],node[2]);
        double d6=dis(node[3],node[1]);

        double ans = min(d1+d3,min(d2+d4,d5+d6));
        printf("%.8lf\n",ans);

    }
    return 0;
}
View Code

 

posted on 2013-08-19 20:51  风流monkey  阅读(251)  评论(0编辑  收藏  举报