This error occurred in the fast sorting, sorting data of the double type,
Return A> B? 1:-1;
If it is reduced, data will be lost.
Http://acm.hdu.edu.cn/showproblem.php? PID = 1, 1875
# Include <iostream> # include <stdio. h> # include <string. h> # include <stdlib. h> # include <math. h>Using namespaceSTD;IntN,TT;IntTX[102],Ty[102];StructNode{IntX,Y;DoubleW;}Edge[101*100/2+1];IntBin[102];VoidAdd(IntU,IntV,DoubleW1){Edge[TT].X=U;Edge[TT].Y=V;Edge[TT].W=W1;TT++ ;}IntCMP(ConstVoid*A,ConstVoid*B){Return(*(StructNode*)A).W> (*(StructNode*)B).W?1:-1;}IntFindx(IntX){IntR=X;While(R! =Bin[R])R=Bin[R];IntJ,K;J=X;While(J! =R){K=Bin[J];Bin[J] =R;J=K;}ReturnR;}VoidMerge(IntX,IntY){IntFX=Findx(X);IntFY=Findx(Y);If(FX! =FY)Bin[FX] =FY;}VoidKuscal(){DoubleSum=0;IntLl=1;// Minimum Spanning Tree n-1 edgeIntI=0;While(Ll<N&&I<TT){If(Ll=N)Break;If(Findx(Edge[I].X)! =Findx(Edge[I].Y)){Merge(Findx(Edge[I].X),Findx(Edge[I].Y));Sum=Sum+Edge[I].W;Ll++ ;}I++ ;}If(Ll=N)Printf("%. 1lf \ n",Sum);ElsePrintf("Oh! \ N");}IntMain(){IntT;Scanf("% D",&T);While(T--){Scanf("% D",&N);TT=0;For(IntI=1;I<=N;I++)Bin[I] =I;For(IntI=1;I<=N;I++ ){Scanf("% D",&TX[I], &Ty[I]);}DoubleR;For(IntI=1;I<=N;I++ ){For(IntJ=I+1;J<=N;J++ ){R=SQRT(POW(TX[I]-TX[J],2) +POW(Ty[I]-Ty[J],2));If(R> =10&&R<=1000)Add(I,J,R*100);}}Qsort(Edge,TT,Sizeof(Edge[0]),CMP);Kuscal();}Return0;}