/*
translation:
给出n根木棍的端点位置,然后问任意两个木棍是否连通
solution:
计算几何,并查集
首先计算出任意两个木棍之间是否有公共端点,如果有,就对两个木棍的编号进行并查集的unite操作。
这样到最后只需要判断根节点是否相同即可。
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const int maxn = 20;
const double EPS = 1e-10;
double add(double a, double b)
{
if(abs(a + b) < EPS * (abs(a) + abs(b))) return 0;
return a + b;
}
struct P
{
double x, y;
P(){}
P(double x_, double y_):x(x_),y(y_){}
P operator + (P p) {
return P(add(x, p.x), add(y, p.y));
}
P operator - (P p) {
return P(add(x, -p.x), add(y, -p.y));
}
P operator * (double d) {
return P(x * d, y * d);
}
double dot(P p) { //内积
return add(x * p.x, y * p.y);
}
double det(P p) { //外积
return add(x * p.y, -y * p.x);
}
};
int par[maxn], high[maxn], n;
poj1127(计算几何,并查集)
最新推荐文章于 2020-03-05 13:20:14 发布