제출 #562581

#제출 시각아이디문제언어결과실행 시간메모리
562581Leo121Ideal city (IOI12_city)C++14
32 / 100
1092 ms5064 KiB
#include <bits/stdc++.h> #define forn(i, a, b) for(int i = int (a); i <= int(b); ++ i) #define fora(i, a, b) for(int i = int (a); i >= int(b); -- i) #define pb push_back #define fi first #define se second #define mp make_pair using namespace std; typedef pair<int, int> pii; typedef long long ll; typedef vector<int> vi; int mx[4] = {0, 0, 1, -1}; int my[4] = {1, -1, 0, 0}; map<pii, int> mapa; queue<int> q; const int maxn = 1e5; int distancia[maxn]; vi graph[maxn]; int mod = 1e9; int res = 0; void bfs(int ind){ int u; while(!q.empty()){ u = q.front(); q.pop(); for(auto v : graph[u]){ if(distancia[v] == -1){ distancia[v] = distancia[u] + 1; if(v > ind){ res += distancia[v]; res %= mod; } q.push(v); } } } } int DistanceSum(int N, int *X, int *Y) { forn(i, 0, N - 1){ mapa[mp(X[i], Y[i])] = i; } forn(i, 0, N - 1){ forn(j, 0, 3){ if(mapa.count(mp(X[i] + mx[j], Y[i] + my[j]))){ graph[i].pb(mapa[mp(X[i] + mx[j], Y[i] + my[j])]); } } } forn(i, 0, N - 1){ memset(distancia, -1, sizeof(distancia)); distancia[i] = 0; q.push(i); bfs(i); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...