constint N =510, inf =1e9;int a[N], head[N], num, now[N], s, t, dis[N];longlong ans =0;bool vis[N];structedge{int nxt, to, val, pri;};
edge e[1000010];voidaddEdge(int x,int y,int z,int w){e[++ num].nxt = head[x];head[x]= num;e[num].to = y;e[num].val = z;e[num].pri = w;}boolspfa(){for(int i =0; i <= t; i ++)dis[i]= inf;dis[s]=0;queue <int> q;q.push(s);while(!q.empty()){int x = q.front(); q.pop();for(int i = head[x]; i !=-1; i = e[i].nxt){int to = e[i].to;if(dis[to]> dis[x]+ e[i].pri)if(e[i].val >0){dis[to]= dis[x]+ e[i].pri;q.push(to);}}}if(dis[t]!= inf)returntrue;returnfalse;}intdfs(int x,int flow){if(vis[x])return0;vis[x]=1;if(x == t)return flow;for(int i = now[x]; i !=-1; i = e[i].nxt){now[x]= i;if(dis[e[i].to]== dis[x]+ e[i].pri && e[i].val >0){int val =dfs(e[i].to,min(e[i].val, flow));if(val >0){e[i].val -= val;e[i ^1].val += val;ans +=(longlong) val * e[i].pri;return val;}}}return0;}intmain(){int T =1;T =read();while(T --){int n, m, sum =0;num =-1;n =read(); m =read();memset(head,-1,sizeof(head));for(int i =1; i <= n; i ++){a[i]=read();sum += a[i];}for(int i =1; i <= m; i ++){int u, v, w;u =read(); v =read(); w =read();addEdge(u, v, inf, w);addEdge(v, u,0,-w);addEdge(v, u, inf, w);addEdge(u, v,0,-w);}if(sum % n !=0){printf("-1\n");continue;}sum /= n;int tot =0;for(int i =1; i <= n; i ++){a[i]-= sum;if(a[i]>0){addEdge(0, i, a[i],0);addEdge(i,0,0,0);tot += a[i];}if(a[i]<0){addEdge(i, n +1,-a[i],0);addEdge(n +1, i,0,0);}}s =0; t = n +1;ans =0;int val;while(spfa()){for(int i =0; i <= t; i ++){vis[i]=0;now[i]= head[i];}while(val =dfs(s, inf)){tot -= val;}}if(tot >0){printf("-1\n");continue;}printf("%lld\n", ans);}return0;}與50位技術專家面對面20年技術見證,附贈技術全景圖