#include using namespace std; typedef long long LL; const int N = 20; int a[N], c[N][N]; int K; int n, m; LL f[1 << N][N], ans; //统计某个状态中数字1的数量 int count(int x) { int res = 0; for (int i = 0; i < 32; i++) res += x >> i & 1; return res; } int main() { cin >> n >> m >> K; for (int i = 0; i < n; i++) { //下标从0开始 cin >> a[i]; f[1 << i][i] = a[i]; //只吃一个的初始化 } while (K--) { int x, y, w; cin >> x >> y >> w; x--, y--; //状态压缩的套路 c[x][y] = w; //记录x,y的前后关联关系 } for (int i = 0; i < (1 << n); i++) { //枚举所有状态 for (int j = 0; j < n; j++) { //枚举每一位 if ((i & (1 << j)) == 0) continue; //不包含j的不是本次要计算的状态 for (int k = 0; k < n; k++) { //枚举前一次最后一个菜k,看看会不会获取到更大的满意度 /* 1、本轮吃下j,最后形成i这样的状态,那么上轮没有j,状态为 i^(1<