hdu 1558
来源:互联网 发布:手机怎么注册淘宝号 编辑:程序博客网 时间:2024/05/16 23:58
# include <iostream># include <stdio.h>using namespace std;int num[1010],pre[1010];char s[5];struct point{double x,y;};struct Edge{point a,b;}E[1010];double xmult(point a,point b,point c){//大于零代表a,b,c左转 return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}bool OnSegment(point a,point b,point c){ //a,b,c共线时有效 return c.x>=min(a.x,b.x)&&c.x<=max(a.x,b.x)&&c.y>=min(a.y,b.y)&&c.y<=max(a.y,b.y);}bool Cross(point a,point b,point c,point d){//判断ab 与cd是否相交 double d1,d2,d3,d4; d1=xmult(c,d,a); d2=xmult(c,d,b); d3=xmult(a,b,c); d4=xmult(a,b,d); if(d1*d2<0&&d3*d4<0) return 1; else if(d1==0&&OnSegment(c,d,a)) return 1; else if(d2==0&&OnSegment(c,d,b)) return 1; else if(d3==0&&OnSegment(a,b,c)) return 1; else if(d4==0&&OnSegment(a,b,d)) return 1; return 0;}int Find(int x){return x==pre[x]?x:pre[x]=Find(pre[x]);}void unin(int i,int j){int x=Find(i);int y=Find(j);if(x!=y){pre[y]=x;num[x]+=num[y];}}int main (){int T,n;scanf("%d",&T);while(T--){scanf("%d",&n);int i;for(i=1;i<=n;i++){pre[i]=i;num[i]=1;}int j=0;for(i=1;i<=n;i++){int k;scanf("%s",s);if(s[0]=='P'){ j++;scanf("%lf%lf%lf%lf",&E[j].a.x,&E[j].a.y,&E[j].b.x,&E[j].b.y);for(k=1;k<j;k++){ //printf("%d %d \n",Cross(E[j].a,E[j].b,E[k].a,E[k].b),Find(k)!=Find(j));if(Find(k)!=Find(j)&&Cross(E[j].a,E[j].b,E[k].a,E[k].b)){unin(k,j);}}}else if(s[0]=='Q'){int temp;scanf("%d",&temp);printf("%d\n",num[Find(temp)]);}}if(T) printf("\n");}return 0;}
//详细解法看算法导论
0 0
- hdu 1558
- hdu 1558
- hdu 1558
- hdu 1558
- HDU 1558 Segment Set
- hdu 1558 Segment set
- hdu 1558 Segment set
- hdu 1558 Segment set
- hdu-1558 Gauss Fibonacci
- HDU 1558 Segment set
- HDU 1558 Segment set
- hdu 1558 Segment set
- HDU-1558-Segment set
- hdu 1558:Segment set
- HDU 1558 Segment set
- HDU 1558 Segment set
- HDU-1558-Segment set
- hdu
- 【新手seo的三大误区】
- android语言切换
- android 30月入门到精通-分包下载和游戏市场
- JAR规格和使用清单
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- hdu 1558
- Tomacat配置
- onWindowFocusChanged重要作用
- TextInputFormat源码
- mysql 中COMMANDS 支持的所有命令
- ORACLE PL/SQL编程详解之七:程序包的创建与应用
- dao contentValues与对象抽取
- LOG4J.PROPERTIES配置详解
- LeetCode | Minimum Path Sum