Submission #958978

#TimeUsernameProblemLanguageResultExecution timeMemory
958978vjudge1Ideal city (IOI12_city)C++17
11 / 100
1062 ms3144 KiB
//#include "city.h" #include <bits/stdc++.h> using namespace std; #define int long long const vector<pair<int, int>> dir = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}}; int ans; set<pair<int, int>> st, vis; void bfs(int X, int Y) { queue<tuple<int, int, int>> q; q.push(make_tuple(0, X, Y)); while (!q.empty()) { int d = get<0>(q.front()); int x = get<1>(q.front()); int y = get<2>(q.front()); q.pop(); if (vis.find(make_pair(x, y)) != vis.end()) continue; vis.insert(make_pair(x, y)); ans += d; for (auto [a, b] : dir) { if (st.find(make_pair(x+a, y+b)) != st.end() && vis.find(make_pair(x+a, y+b)) == vis.end()) { q.push(make_tuple(d+1, x+a, y+b)); } } } } int DistanceSum(signed N, signed *X, signed *Y) { ans = 0; for (int i = 0; i < N; i++) { st.insert(make_pair(X[i], Y[i])); } for (int i = 0; i < N; i++) { vis.clear(); bfs(X[i], Y[i]); } return ans/2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...