kruscal 50pts WA求助

P2504 [HAOI2006] 聪明的猴子

前排
by retep @ 2022-04-24 19:29:40


@[retep](/user/438957) 捕捉神犇 # [retep](/user/438957) ak IOI ```cpp while([retep](/user/438957).ak(IOI)) %%%; ```
by Kirito_Chen @ 2022-04-25 11:13:31


@[Kirito_Chen](/user/472650) 我也50分,不知道哪里错了,代码和你差不多
by 逸之为一 @ 2022-05-11 22:07:32


```cpp #include<bits/stdc++.h> using namespace std ; const int Maxs = 1010 , TIL = ( 1 << 28 ) ; struct Node { int i , l , Q ; } tree[ Maxs * Maxs ] ; int X[Maxs] , Y[Maxs] ; int Sum , Ans , Max ; int Fa[Maxs] ; int A[Maxs] ; int n , m ; int Ecnt ; bool Cmp( Node i , Node l ) { return i.Q < l.Q ; } int Fin( int i ) { return ( Fa[i] == i ) ? i : Fa[i] = Fin( Fa[i] ) ; } int main( ) { scanf("%d" , &n ) ; for(int i = 1 ; i <= n ; i ++ ) Fa[i] = i ; for(int i = 1 ; i <= n ; i ++ ) scanf("%d" , &A[i]) , A[i] *= A[i] ; scanf("%d" , &m ) ; for(int i = 1 ; i <= m ; i ++ ) { scanf( "%d%d" , &X[i] , &Y[i] ) ; for(int l = 1 ; l <= i - 1 ; l ++ ) { tree[ ++ Sum].i = i ; tree[ Sum ].l = l ; tree[ Sum ].Q = abs( X[i] - X[l] ) * abs( X[i] - X[l] ) + abs( Y[i] - Y[l] ) * abs( Y[i] - Y[l] ) ; } } sort( tree + 1 , tree + Sum + 1 , Cmp ) ; for( int i = 1 ; i <= Sum ; i ++ ) { if( Fin( tree[i].i ) == Fin( tree[i].l ) ) continue ; Fa[Fin( tree[i].i )] = Fin( tree[i].l ) ; Max = tree[i].Q ; if( ++ Ecnt == m - 1 ) break ; } for(int i = 1 ; i <= n ; i ++ ) if( A[i] >= Max ) Ans ++ ; printf("%d\n" , Ans) ; return 0 ; } ```
by 逸之为一 @ 2022-05-11 22:09:09


@[逸之为一](/user/311502) 我的问题是`init()`函数里面应该是`i<=m` ,你好像也是同样的问题
by Kirito_Chen @ 2022-05-12 10:28:15


@[Kirito_Chen](/user/472650) 嗯,好像确实是这样呢
by 逸之为一 @ 2022-05-25 15:55:22


@[Kirito_Chen](/user/472650) 啊哈哈哈,AC来捞
by 逸之为一 @ 2022-05-25 15:56:05


|