题意:
给你n个点的图,然后让你在图里挑m个点,达到sumedge/sumnode最小
思路:
由于数据范围小,状压枚举符合m个点的状态,我是用vactor存了结点位置,也记录了结点的sum值,然后跑一发最小生成树就可以知道sumedge,这里判断可以利用乘法,然后更新一个状态就好了;
#includeusing namespace std;typedef long long LL;int ma[20][20];int val[20];int sumnode,sumedge;int n,m;int cnt;int a,b;int dis[20];vector pb;bool vis[20];int prim(){ memset(vis,0,sizeof(vis)); dis[pb[0]]=0; vis[pb[0]]=1; for(int i=1;i ma[pb[k]][pb[j]]) dis[pb[j]]=ma[pb[k]][pb[j]]; } } for(int i=0;i sumedge*b) { a=sumedge; b=sumnode; ans=i; } } } int flag=0; for(int i=0;i