题意给出一个迷宫,然后拿到所有宝藏然后回到原点,求最短时间。
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
#define B(x) (1<<(x))
typedef long long ll;
void cmax(int& a,int b){ if(b>a)a=b; }
void cmin(int& a,int b){ if(b<a)a=b; }
const int oo=0x3f3f3f3f;
const int MOD=1000000007;
const int maxn=105;
int dis[12][12];
int maze[maxn][maxn],mark[maxn][maxn];
int step[maxn][maxn];
int id[maxn][maxn];
int n,m,cnt;
struct Node{
int x,y;
Node(){}
Node(int x_,int y_){
x=x_;y=y_;
}
}q[maxn*maxn],node[12];
int f,r;
int dp[B(11)+5][12];
int d[4][2]={
{1,0},{0,1},{-1,0},{0,-1}
};
void BFS(int sx,int sy){
memset(step,0x3f,sizeof step);