제출 #316779

#제출 시각아이디문제언어결과실행 시간메모리
316779amunduzbaev이상적인 도시 (IOI12_city)C++14
11 / 100
6 ms1152 KiB
//#include "grader.cpp" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int N=205, mod= 1e9; int used[N][N], x[N], y[N], cnt, n, dist[N][N], pos[N][N], used1[N][N]; vector<vector<int>> edges(2005); vector<pair<int,int>> pi; void Dijkstra(int xx,int yy){ //cout<<"=========================\n"<<xx<<" "<<yy<<"\n"; memset(used1, 0, sizeof(used1)); queue<pair<int, pair<int,int>>> q; q.push({0,{xx,yy}}); used1[xx][yy]=1; while(!q.empty()){ auto point = q.front(); q.pop(); int d = point.first, a = point.second.first, b = point.second.second; dist[pos[xx][yy]][pos[a][b]] = d; int cur = pos[a][b]; for(auto x:edges[cur]){ //cout<<pi[x].first<<" "<<pi[x].second<<"\n"; if(used1[pi[x].first][pi[x].second]) continue; q.push({d+1, pi[x]}); used1[pi[x].first][pi[x].second] = 1; } } } pair<int,int> four [4] = {{-1,0}, {+1,0}, {0,-1}, {0,+1}}; int DistanceSum(int N, int *X, int *Y) { n=N; for(int i=0;i<n;i++){ x[i]=X[i]; y[i]=Y[i]; pi.pb({x[i], y[i]}); used[x[i]][y[i]]=1; pos[x[i]][y[i]]=i; } for(int i=0;i<n;i++){ for(int j=0;j<4;j++){ int x1 = x[i]+four[j].first, y1 = y[i]+four[j].second; if(used[x1][y1]) edges[i].pb(pos[x1][y1]); } } for(int i=0;i<n;i++) Dijkstra(x[i], y[i]); int ans=0; for(int i=0; i<n; i++){ for(int j=i+1; j<n;j++){ ans += dist[i][j]; ans %= mod; } } return ans; } /* 11 2 5 2 6 3 3 3 6 4 3 4 4 4 5 4 6 5 3 5 4 5 6 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...