Archived
last
This commit is contained in:
1 parent
bbc2a605d4
commit
74760a86b1
2 files changed
+25
-10
No files matched your search
+7
-8
@@ -38,25 +38,24 @@ int main() {
|
||||
}
|
||||
}
|
||||
memset(dline, 0x7f, sizeof dline);
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
dig(m + i);
|
||||
for(int j = 1; j <= n; ++j) {
|
||||
for(int i = 1; i <= n; ++i) { // 500
|
||||
dig(m + i); // 50
|
||||
for(int j = 1; j <= n; ++j) { // 500
|
||||
dline[i][j] = de[m + j];
|
||||
}
|
||||
}
|
||||
// O(n log(m + n))
|
||||
while(q--) {
|
||||
while(q--) { // 1e5
|
||||
int x, y;
|
||||
scanf("%d%d", &x, &y);
|
||||
long long ans = LLONG_MAX;
|
||||
for(pair<long long, int> i : fri[x]) {
|
||||
for(pair<long long, int> j : fri[y]) {
|
||||
for(pair<long long, int> i : fri[x]) { // 20
|
||||
for(pair<long long, int> j : fri[y]) { // 20
|
||||
ans = min(ans, dline[i.second - m][j.second - m] + i.first + j.first);
|
||||
}
|
||||
}
|
||||
// dig(x);
|
||||
if(ans == LLONG_MAX) printf("-1\n"); // 疑似算法有问题
|
||||
else printf("%lld\n", 1ll * w[x] + 1ll * w[y] + ans);
|
||||
printf("%lld\n", 1ll * w[x] + 1ll * w[y] + ans);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user