이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define pii pair<int, int>
#define x first
#define y second
#define pb push_back
using namespace std;
int delta[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
set<pii> vues;
map<pii, vector<pii>> voisins;
map<pii, int> dist;
int DistanceSum(int nVilles, int *X, int *Y) {
vector<pii> villes(nVilles);
for (int iVille = 0; iVille < nVilles; ++iVille){
villes[iVille] = {X[iVille], Y[iVille]};
vues.insert(villes[iVille]);
}
for (pii ville : villes){
for (int i = 0; i < 4; ++i){
int ax = ville.x + delta[i][0], ay = ville.y + delta[i][1];
if (vues.count({ax, ay}) == 1)
voisins[ville].pb({ax, ay});
}
}
int sum = 0;
for (pii depart : villes){
dist = {};
dist[depart] = 0;
queue<pii> file;
file.push(depart);
while (!file.empty()){
pii cur = file.front();
file.pop();
for (pii voisin : voisins[cur]){
if (dist.count(voisin) == 0){
sum += dist[cur] + 1;
dist[voisin] = dist[cur] + 1;
file.push(voisin);
}
}
}
}
return sum/2;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |