Submission #62414

#TimeUsernameProblemLanguageResultExecution timeMemory
62414theknife2001Ideal city (IOI12_city)C++17
32 / 100
1089 ms32132 KiB
#include <bits/stdc++.h> using namespace std; const int N=2005; int dist[N][N]; int grid[N][N]; int mx[]={ 0, 0,-1,+1}; int my[]={-1,+1, 0, 0}; int n; void bfs(int s,int *X,int *Y) { for(int i=0;i<n;i++) dist[s][i]=1e9+55; dist[s][s]=0; queue < int > q; q.push(s); int u ,c ,v; int x,y; while(q.size()) { u=q.front(); c=dist[s][u]; q.pop(); for(int i=0;i<4;i++) { x=mx[i]+X[u]; y=my[i]+Y[u]; v=grid[x][y]; if(dist[s][v]>c+1) { dist[s][v]=c+1; q.push(v); } } } } int DistanceSum(int N, int *X, int *Y) { n=N; long long ans=0; int m=1e9; memset(grid,-1,sizeof grid); for(int i=0;i<n;i++) { grid[X[i]][Y[i]]=i; } for(int i=0;i<n;i++) bfs(i,X,Y); for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { ans+=dist[i][j]; ans%=m; } } int ret=ans; return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...