10分求助
查看原帖
10分求助
152338
Accelerator_5楼主2022/12/20 18:40

用的bfs写的,求助为什么只有10分啊??

#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int n;
int mp[205][205];
bool vis[1005];
int x[1005],y[1005],p[1005];
int maxn,ans;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i]>>p[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            int tmp=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
            if(tmp<=p[i]){
                mp[i][j]=1;
            }
            if(tmp<=p[j]){
                mp[j][i]=1;
            }
        }
    }
    for(int i=1;i<=n;i++){
        memset(vis,0,sizeof vis);
        queue<int> q;
        q.push(i);
        vis[i]=1;
        while(!q.empty()){
            int tmp=q.front();
            q.pop();
            for(int j=1;j<=n;j++){
                if(mp[tmp][j]==1&&!vis[j]){
                    maxn++;
                    vis[j]=1;
                    q.push(j);
                }
            }
        }
        ans=max(ans,maxn);
        maxn=0;
    }
    cout<<ans;
    return 0;
}
2022/12/20 18:40
加载中...