hdu 1588 線段相交 並查集

2021-07-02 18:53:16 字數 893 閱讀 1485

判斷第k

個線段的集合中一共有幾條線段。

先用並查集將相交的線段合併記錄,最後查詢sum陣列即可。

#include#include#includeusing namespace std;

struct node

s[2004];

struct edge

e[2005];

int fa[2005];

int sum[2005];

int t,n,cha;

char c;

int m=0;

double direction (node p0, node p1, node p2)

bool on_segment (node p0, node p1, node p2)//判斷線段相交

bool segments_intersect (node p1, node p2, node p3, node p4)

//並查集操作

void init()

}int find(int x)

void combine(int x,int y)

int main()

{ cin>>t;

while(t--)

{ cout<<(m++?"\n":"");

cin>>n;

init();

int cixu=1;

for(int i=1;i<=n;i++)

{ cin>>c;

if(c=='p')

{cin>>e[cixu].a.x>>e[cixu].a.y>>e[cixu].b.x>>e[cixu].b.y;

e[cixu].num=cixu;

for(int j=1;j>cha;

cout<

hdu 1558 線段相交 並查集

題意 給你一些操作,p後邊輸入四個值,分別代表一條線段的起點 終點座標,當輸入q時,後邊輸入乙個整形值k,輸出第k條線段所在的集合中包含的線段的個數。解題思路 線段相交 並查集,sum i 表示i所在的線段集合中,i為根節點的線段總數。在合併時可以更新。include includeusing na...

hdu1558並查集 線段相交

hdu1558 關於線段相交的內容參考演算法導論p577 include include includeusing namespace std int pre 1010 sum 1010 struct point struct edge edge 1010 int e 邊數 int find int...

hdu 1558 線段相交判斷 並查集

2535437 2010 06 12 00 42 04 accepted 1558 109ms 256k 2695 b c t t include include include using namespace std struct point struct sdlxd 1002 int p 100...