题目大意:题意百度。
解题策略:建立二部图模型,以人走的每段路与狗的兴趣点作二部图,求出该二部图对于狗的兴趣点的最大匹配数,加上人的路线,就是狗的路线,输出即可。
1,二部图最大匹配用邻接表实现,快速;
2,有个非常恶心的wa点,就是建立人的每段路与狗的兴趣点之间关系时,精度控制eps,若定义为1e-10 wa, 1e-20AC,wa了好久……浪费时间
/*
UVA 670 The dog task
AC by J_Dark
ON 2013/4/20
Time 0.016s
*/
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int perNodeNum, dogNodeNum;
struct XY{
int x, y;
XY(int a=0, int b=0){ x=a, y=b;}
double Distance(XY P){ return sqrt(((P.x-x)*(P.x-x)+ (P.y-y)*(P.y-y))*1.0);}
};
struct PER{ //人走的每段路
XY u, v; //起点,终点
double pathUV; //路的长度
PER(XY a, XY b){
u=a;
v=b;
pa