记录编号 |
604953 |
评测结果 |
AAAAAAAAAA |
题目名称 |
3659.[SYOI 2022]倒水 |
最终得分 |
100 |
用户昵称 |
hsl_beat |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.031 s |
提交时间 |
2025-08-12 17:49:30 |
内存使用 |
3.72 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
bool vis[101][101][101];
signed main()
{
int a, b, c, x;
cin >> a >> b >> c >> x;
queue<vector<int>> que;
que.push({a, 0, 0, 0});
while (que.size()) {
int ta = que.front()[0];
int tb = que.front()[1];
int tc = que.front()[2];
int step = que.front()[3];
if (vis[ta][tb][tc]) {
que.pop();
continue;
}
vis[ta][tb][tc] = 1;
if (ta == x || tb == x || tc == x) {
cout << step;
return 0;
}
if ((double)clock() / CLOCKS_PER_SEC >= 1.00) {
cout << "false";
return 0;
}
if (ta) {
int tp = min(ta, b - tb);
que.push({ta - tp, tb + tp, tc, step + 1});
tp = min(ta, c - tc);
que.push({ta - tp, tb, tc + tp, step + 1});
}
if (tb) {
int tp = min(tb, a - ta);
que.push({ta + tp, tb - tp, tc, step + 1});
tp = min(tb, c - tc);
que.push({ta, tb - tp, tc + tp, step + 1});
}
if (tc) {
int tp = min(tc, a - ta);
que.push({ta + tp, tb, tc - tp, step + 1});
tp = min(tc, b - tb);
que.push({ta, tb + tp, tc - tp, step + 1});
}
}
cout << "false";
return 0;
}