只有十分
查看原帖
只有十分
217634
anonymous217楼主2022/8/18 17:07
#include<bits/stdc++.h>
using namespace std;
struct cow{int x,y,p;}cows[2005];
int n,c[2005][2005],vis[2005],tmp;
bool comp(int f,int t){
    return (f!=t)&&(((cows[f].x-cows[t].x)*(cows[f].x-cows[t].x)+(cows[f].y-cows[t].y)*(cows[f].x-cows[t].y))<(cows[f].p*cows[f].p));
}
void dfs(int cur){
    if(vis[cur]==1)return;
    vis[cur]=1;tmp++;
    for(int i=1;i<=n;i++){
        if(c[cur][i]==1&&vis[i]==0)dfs(i);
    }
    return;
}
int main(){
    cin>>n;memset(c,0,sizeof(c));
    for(int i=1;i<=n;i++){
        cin>>cows[i].x>>cows[i].y>>cows[i].p;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(comp(i,j))c[i][j]=true;
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        memset(vis,0,sizeof(vis));
        tmp=0;dfs(i);
        cout<<i<<" "<<tmp<<"\n";
        ans=max(ans,tmp);
    }
    cout<<ans;
    return 0;
}
2022/8/18 17:07
加载中...