比赛 |
4043级NOIP2022欢乐赛2nd |
评测结果 |
AAAEEEEEEE |
题目名称 |
液体运输 |
最终得分 |
30 |
用户昵称 |
HeSn |
运行时间 |
1.401 s |
代码语言 |
C++ |
内存使用 |
6.47 MiB |
提交时间 |
2022-10-31 20:12:48 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 200010;
int n, m, kk, q, a[MAXN], lans, dis[510][510];
//vector<int> cd[MAXN], w[MAXN];
signed main() {
freopen("Xen.in", "r", stdin);
freopen("Xen.out", "w", stdout);
cin >> n >> m;
// memset(dis, 0x3f, sizeof(dis));
for(int i = 1; i <= m; i ++) {
int x, y, z;
cin >> x >> y >> z;
// cd[x].push_back(y);
// w[x].push_back(z);
// cd[y].push_back(x);
// w[y].push_back(z);
dis[x][y] = dis[y][x] = max(dis[x][y], z);
}
for(int k = 1; k <= n; k ++) {
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= n; j ++) {
// if(dis[i][k] && dis[k][j]) {
dis[i][j] = max(dis[i][j], min(dis[i][k], dis[k][j]));
// }
}
}
}
for(int i = 1; i <= n; i ++) {
dis[i][i] = 0;
// for(int j = 1; j <= n; j ++) {
// cout << dis[i][j] << ' ';
// }
// cout << endl;
}
for(int i = 1; i <= n; i ++) {
cin >> a[i];
}
cin >> q >> kk;
for(int i = 1; i <= q; i ++) {
int st, x, mod, ans, sum = 1;
cin >> st >> x >> mod;
st = (st + kk * lans) % n + 1;
x = (x + kk * lans) % mod;
ans = a[st];
// cout << ' ' << st << ' ' << x << endl;
for(int j = 1; j <= n; j ++) {
if(j != st) {
if(dis[j][st] >= x || dis[st][j] >= x) {
sum ++;
ans = min(ans, a[j]);
}
}
}
cout << sum << ' ' << ans << endl;
lans = ans;
}
return 0;
}