33,008
社区成员
发帖
与我相关
我的任务
分享
初始g[][] = 0;
如果A是B的附属,g[A][B] = 1;
for 每个点vi
如果vi没访问到
从vi深搜-->得到一个连通分支i
cost[i] = 连通分支i里的一个最小费用,num[i]=连通分支i里选票数量.
end;
每个cost[i]从小到大排序;
for 每个i
if totalnum + num[i] <= need
totalcost += cost[i], totalnum += num[i];
else
break;
totalcost即是所要的