Meeting

    xiaoxiao2021-12-14  24

    关键点:每次将不满组条件的两个村民i,j(i<j)标记,这样下次不再计算j村民,节约时间

    #include <iostream> #include <cstring> using namespace std; #define MAX 50005 #define INF 1e7 bool vis[MAX]; struct node{ int x,y; }point[MAX]; int main() { int t,n,mi,m,temp,x,y,d;cin>>t; while (t--) { cin>>n; mi=INF; memset(vis,0,sizeof(vis)); for (int i=0;i<n;i++) cin>>point[i].x>>point[i].y; for (int i=0;i<n;i++) { if (!vis[i]) { temp=0; for (int j=0;j<n;j++) { if(j==i) continue; x=point[i].x-point[j].x; y=point[i].y-point[j].y; d=x*x+y*y; if (d>mi) { vis[i]=1; vis[j]=1; break; } if (d>temp) temp=d; } if (!vis[i]&&mi>temp) mi=temp; } } cout<<mi<<endl; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-971583.html

    最新回复(0)