无话可说。。。hduc++不支持q.push((Node){1,2,3,4}),转换类型的写法。。。G++超时,C++AC。要死
感觉几个瓶子分水的题都是bfs。。。。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
#define ll long long int
#define res register int
#define inf 0x3f3f3f3f
const int maxn=210;
int A,B,C;
bool vis[maxn][maxn][maxn];
struct Node{
int a,b,c;
int step;
};
int bfs()
{
queue<Node> q;
Node temp;
temp.a=A,temp.b=0,temp.c=0,temp.step=0;
q.push(temp);
vis[A][0][0]=true;
while(!q.empty()){
Node now=q.front();
int a=now.a,b=now.b,c=now.c,t=now.step;
q.pop();
if(a==A/2||b==A/2||c==A/2){
int cnt=0;
if(a==A/2) cnt++;
if(b==A/2) cnt++;
if(c==A/2) cnt++;
if(2==cnt) return t;
if(1==cnt) return t+1;
}
if(a!=0){//1
if(b!=B