Submission #805032

#TimeUsernameProblemLanguageResultExecution timeMemory
805032aymanrsIdeal city (IOI12_city)C++14
0 / 100
1071 ms3072 KiB
#include<bits/stdc++.h> using namespace std; const int MOD = 1e9; int DistanceSum(int N, int *X, int *Y){ vector<int> g[N]; map<pair<int, int>, int> s; for(int i = 0;i < N;i++){ auto p = s.find({X[i]-1, Y[i]}); if(p != s.end()) { g[i].push_back(p->second); g[p->second].push_back(i); } p = s.find({X[i]+1, Y[i]}); if(p != s.end()) { g[i].push_back(p->second); g[p->second].push_back(i); } p = s.find({X[i], Y[i]-1}); if(p != s.end()) { g[i].push_back(p->second); g[p->second].push_back(i); } p = s.find({X[i], Y[i]+1}); if(p != s.end()) { g[i].push_back(p->second); g[p->second].push_back(i); } s[{X[i], Y[i]}] = i; } long long ans = 0; int d[N]; for(int i = 0;i < N;i++){ memset(d, 0, sizeof(d)); for(int j = 0;j < i;j++) d[j] = 1; queue<int> q; q.push(i); while(!q.empty()){ int t = q.front(); q.pop(); for(int j : g[t]){ if(j != i && !d[j]){ d[j] = d[t]+1; ans = (ans+d[j])%MOD; q.push(j); } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...