제출 #805039

#제출 시각아이디문제언어결과실행 시간메모리
805039aymanrs이상적인 도시 (IOI12_city)C++14
32 / 100
1079 ms2912 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)); 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; if(j > i) 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...