TTTTTTTTTTTTTT poj 1127 Jack Straws 线段相交+并查集
题意:
有n个木棍,给出木棍的两个端点的x,y坐标,判断其中某两个线段是否连通(可通过其他线段连通)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
int max(int a,int b) {return a>b?a:b;};
int min(int a,int b) {return a<b?a:b;};
int r[15];
struct node{
int x,y;
}p;
struct Line{
node a,b;
}line[15];
int neiji(node a,node b)
{
return a.x*b.x+a.y*b.y;
} int jian(node a,node b,node c)
{
return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
} int findr(int i)
{
if(i!=r[i])
r[i]=findr(r[i]);
return r[i];
}
void unite(int i,int j)
{
int ri=findr(i),rj=findr(j);
r[rj]=ri;
}
int solve(Line m,Line n)
{
if(min(m.a.x,m.b.x)<=max(n.a.x,n.b.x)&&
max(m.a.x,m.b.x)>=min(n.a.x,n.b.x)&&
min(m.a.y,m.b.y)<=max(n.a.y,n.b.y)&&
max(m.a.y,m.b.y)>=min(n.a.y,n.b.y)&&
jian(m.a,m.b,n.a)*jian(m.a,m.b,n.b)<=0&&
jian(n.a,n.b,m.a)*jian(n.a,n.b,m.b)<=0)
return 1;
return 0;
}//跨立实验判断线段相交
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{ for(int i=1;i<=n;i++)
scanf("%d %d %d %d",&line[i].a.x,&line[i].a.y,&line[i].b.x,&line[i].b.y); for(int i=1;i<=n;i++)
r[i]=i; for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)/*并查集检验线段的连通性,注意是两层循环,每个i都将直接与其相连的加入它当前所在的集合*/
{
if(findr(i)==findr(j))continue;
if(solve(line[i],line[j]))
unite(i,j);
} while(1)
{
int a,b;
scanf("%d %d",&a,&b);
if(!a||!b) break;
if(findr(a)==findr(b))
printf("CONNECTED\n");
else
printf("NOT CONNECTED\n");
}
}
return 0;
}
分析:跨立实验模板+并查集
TTTTTTTTTTTTTT poj 1127 Jack Straws 线段相交+并查集的更多相关文章
- [poj 1127]Jack Straws[线段相交][并查集]
题意: 给出一系列线段,判断某两个线段是否连通. 思路: 根据线段相交情况建立并查集, 在同一并查集中则连通. (第一反应是强连通分量...实际上只要判断共存即可, 具体的方向啊是没有关系的..) 并 ...
- POJ 1127 Jack Straws (线段相交)
题意:给定一堆线段,然后有询问,问这两个线段是不是相交,并且如果间接相交也可以. 析:可以用并查集和线段相交来做,也可以用Floyd来做,相交就是一个模板题. 代码如下: #pragma commen ...
- poj1127 Jack Straws(线段相交+并查集)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Jack Straws Time Limit: 1000MS Memory L ...
- TZOJ 1840 Jack Straws(线段相交+并查集)
描述 In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the ta ...
- poj 1127:Jack Straws(判断两线段相交 + 并查集)
Jack Straws Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2911 Accepted: 1322 Descr ...
- POJ 1127 Jack Straws(计算几何)
题目链接 抄的模版,居然1Y了.就是简单的线段相交+并查集. #include <iostream> #include <cstring> #include <cstdi ...
- poj 1127 -- Jack Straws(计算几何判断两线段相交 + 并查集)
Jack Straws In the game of Jack Straws, a number of plastic or wooden "straws" are dumped ...
- TOJ1840: Jack Straws 判断两线段相交+并查集
1840: Jack Straws Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 1 ...
- hdu 1558 线段相交+并查集
题意:要求相交的线段都要塞进同一个集合里 sol:并查集+判断线段相交即可.n很小所以n^2就可以水过 #include <iostream> #include <cmath> ...
随机推荐
- python 求从1加到100的和,join的用法
li=[] def func3(x): li.append(str(x)) if x==1: return 1 return x+func3(x-1) # print(func3(100)) re=f ...
- Hadoop简介及架构
狭义上来说,hadoop就是单独指代hadoop这个软件, 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件 2.hadoop的历史版本介绍 0.x系列版本:hadoop当中最早的一 ...
- python正则表达式的介绍
re模块的使用 re.match从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None. import re # re.match(正则表达式,要匹配的字符串) ...
- idea 设置自动生成注释
idea新建类注释规则 /** @ProjectName: ${PROJECT_NAME} @Package: ${PACKAGE_NAME} @ClassName: ${NAME} @Descrip ...
- Codeforces 1229B. Kamil and Making a Stream
传送门 注意到只要考虑祖先和后代之间的贡献 发现对于一个节点,他和所有祖先最多产生 $log$ 个不同的 $gcd$ 所以每个节点开一个 $vector$ 维护祖先到自己所有不同的 $gcd$ 和这个 ...
- 面试之什么是java虚拟机
java虚拟机体系结构 方法区 堆 java虚拟机栈 本地方法栈 方法区 java虚拟机编译的class文件中二进制数据类型解析数据存在方法区中 是所有线程共享 和存在数据的线程安全问题 当二个线程使 ...
- 机器学习-正则化(岭回归、lasso)和前向逐步回归
机器学习-正则化(岭回归.lasso)和前向逐步回归 本文代码均来自于<机器学习实战> 这三种要处理的是同样的问题,也就是数据的特征数量大于样本数量的情况.这个时候会出现矩阵不可逆的情况, ...
- [转载]十六进制数的两种不同表示:0x和H
来源:https://blog.csdn.net/u013773644/article/details/519811860x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别 ...
- MySQL存储引擎知多少
MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的“存储引擎”(storage_engine)呢?有时候面试题中也会问道MySQL几种常用的存储引擎的区别.这次就简短 ...
- 语句:if语句、do-while语句、while语句、for语句、for-in语句、with语句、label语句、switch语句以及break和continue语句;
ECMA-262规定了一组语句(也成为流控制语句),语句定义了ECMASript中的主要语法. 语句分类:条件分支语句.条件判断语句和循环语句 代码块:是一对包裹多行代码的花括号,代码块后不可加引号: ...