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> ...
随机推荐
- [转帖]ORA-00600: internal error code, arguments: [4193]问题解决
ORA-00600: internal error code, arguments: [4193]问题解决 https://www.cnblogs.com/linyfeng/p/7496736.htm ...
- 对C++类的继承和派生的理解
C++中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产. 1.继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程. ...
- # vmware异常关机后,虚拟系统无法启动的解决办法
vmware异常关机后,虚拟系统无法启动的解决办法 先使用everything搜索所有后缀为.lck的文件,这些文件全部删除,如果不确定是否可以删除,先把这些文件转移到桌面,等能启动虚拟系统之后再删除 ...
- centos 7 源码安装 mysql 5.6
下载 mysql 安装包 $ wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.44.tar.gz # or $ curl -O ht ...
- Centos7 更换为网易YUM源
当我们刚刚安装系统的时候 yum 的速度那是真滴慢所以我们就需要一个更加快速的镜像,这时候网易镜像带给我们便捷.下面来一起更换吧! 备份当前的 yum 源 # yum 源在目录 /etc/yum.re ...
- HTML5网页文档结构
2.1 Web标准 Web标准,使得Web开发更加容易.Web标准由万维网联盟(W3C)制定. 2.1.1 Web标准概述 Web标准的最终目的就是保证每个人都有权力访问相同 ...
- TCP/IP 协议是如何保证数据可靠性的?
原文: 网络基础:TCP协议-如何保证传输可靠性 TCP协议传输的特点主要就是面向字节流.传输可靠.面向连接.这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的. 确保传输可靠性的方式TCP ...
- 第二篇 jQuery 选择器
2-1,2 table隔行变色 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- MyBatis与Hibernate总结篇
也用了这么久的Hibernate和MyBatis了,一直打算做一个总结,就他们之间的优缺点说说我自己的理解: 首先,Hibernate是一个ORM的持久层框架,它使用对象和我们的数据库建立关系,在Hi ...
- Java一些小例子
package com.example.demo; public class Solution { public static void main(String[] args) { func(); } ...