编译错误求调
查看原帖
编译错误求调
1098005
love_lz2023楼主2024/5/26 11:59
#include<bits/stdc++.h>
using namespace std;

const int MAXN = 505;
struct City {
int x, y;
int gamma;
int closestCity;
};

double distance(int x1, int y1, int x2, int y2) {
return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
}

bool cmpGamma(const City& a, const City& b) {
return a.gamma < b.gamma;
}

int main() {
	int N;
	cin >> N;
	vector cities(N + 1);
	cities[0].x = cities[0].y = 0; 
	for (int i = 1; i <= N; ++i) {
	cin >> cities[i].x >> cities[i].y;
	}

	for (int i = 1; i <= N; ++i) {
    	double minDist = distance(cities[i].x, cities[i].y, 0, 0);
    	cities[i].closestCity = 0;
    	for (int j = 1; j <= N; ++j) {
        	if (i != j) {
            	double dist = distance(cities[i].x, cities[i].y, cities[j].x, cities[j].y);
            	if (dist < minDist || (dist == minDist && cities[j].gamma < cities[cities[i].closestCity].gamma)) {
                	minDist = dist;
                	cities[i].closestCity = j;
            }
        }
    }
}

	vector<bool> visited(N + 1, false);
	queue<int> q;
	q.push(0); 
	visited[0] = true;
	cities[0].gamma = 1;
	
	while (!q.empty()) {
	    int curr = q.front();
	    q.pop();
	    for (int i = 1; i <= N; ++i) {
	        if (cities[i].closestCity == curr && !visited[i]) {
	            visited[i] = true;
	            cities[i].gamma = cities[curr].gamma + 1;
	            q.push(i);
	        }
	    }
	}
	

	sort(cities.begin() + 1, cities.end(), cmpGamma);
	
	long long gammaSum = 0;
	for (int i = 1; i <= N; ++i) {
	    gammaSum += cities[i].gamma;
	}
	if (gammaSum % 2 != 0) {
	    cout << "No" << endl;
	    return 0;
	}
	long long targetSum = gammaSum / 2;
	long long currentSum = 0;
	bool found = false;
	for (int i = 1; i <= N; ++i) {
	    currentSum += cities[i].gamma;
	    if (currentSum == targetSum) {
	        found = true;
	        break;
	    } else if (currentSum > targetSum) {
	        break;
	    }
	}
	cout << (found ? "Yes" : "No") << endl;
	
	return 0;
}
2024/5/26 11:59
加载中...