Submission #1237749

#TimeUsernameProblemLanguageResultExecution timeMemory
1237749caacrugon이상적인 도시 (IOI12_city)C++20
11 / 100
1096 ms3136 KiB
#include <bits/stdc++.h>
using namespace std;

#define mkp make_pair

int DistanceSum(int N, int *X, int *Y) {
  map<pair<int,int>,bool> con;
  for(int i=0;i<N;i++){
    con[mkp(X[i],Y[i])]=true;
  }
  int ans=0;
  vector<int> distx={1,0,-1,0},disty={0,1,0,-1};
  for(int i=0;i<N;i++){
    queue<pair<int,int>> q;
    q.push(mkp(X[i],Y[i]));
    map<pair<int,int>,int> dist;
    dist[mkp(X[i],Y[i])]=0;
    while(q.size()){
      pair<int,int> nodo=q.front();
      q.pop();
      int d=dist[nodo];
      for(int i=0;i<4;i++){
        if(con.count(mkp(nodo.first-distx[i],nodo.second-disty[i]))==0 || dist.count(mkp(nodo.first-distx[i],nodo.second-disty[i])))continue;
        q.push(mkp(nodo.first-distx[i],nodo.second-disty[i]));
        dist[mkp(nodo.first-distx[i],nodo.second-disty[i])]=d+1;
      }
    }
    for(int j=i+1;j<N;j++){
      if (dist.count(mkp(X[j],Y[j]))) {
        ans=(ans+dist[mkp(X[j],Y[j])])%1000000000;
      }
    }
  }
  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...