企业网站的网络营销功能,网站做计算功能,tp做网站签到功能,响应式网站的发展现状[题目通道]([ABC352E] Clique Connect - 洛谷)
鄙人今日写人生第一篇题解
希望管理大大通过 首先#xff0c;我们先看题:
它说一共有n个点#xff0c;m回操作。。。
每次操作 都有 一个Ki 和 Ci
Ki代表有Ki个点,Ci代表每条边所赋的边权
一看就知道这是个最小生成树的板子…[题目通道]([ABC352E] Clique Connect - 洛谷)
鄙人今日写人生第一篇题解
希望管理大大通过 首先我们先看题:
它说一共有n个点m回操作。。。
每次操作 都有 一个Ki 和 Ci
Ki代表有Ki个点,Ci代表每条边所赋的边权
一看就知道这是个最小生成树的板子
我使用了著名的 kruskal
话不多说贴上代码
#includebits/stdc.h
#define int long longusing namespace std;const int N2e5100;//注意范围 struct edge{int u,v;int w;
}e[N*30];//开大点儿 int fa[N],n,m,ans0,cnt1,x,y,a[N],t0;//cnt计数器记录有多少条边~ int find(int x){if (fa[x]x) return x;return fa[x]find(fa[x]);
}//找father bool cmp(edge a,edge b){return a.wb.w;
} signed main(){std::ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);//加速 cinnm;for (int i1;in;i){fa[i]i;}for (int i1;im;i){int qq,ww;cinqqww;for (int j1;jqq;j){cina[j];//临时存一遍每个点 }for (int j2;jqq;j){//做一遍建边~ cnt;e[cnt].ua[j];e[cnt].va[j-1];e[cnt].www;}cnt;e[cnt].ua[1];e[cnt].va[qq];e[cnt].www;//需注意a[1]和a[qq]也要建边 } sort(e1,ecnt1,cmp);//从小到大排序~~~ for (int i1;icnt;i){//相信各位都了解这是干什么的~ int fufind(e[i].u);int fvfind(e[i].v);if (fu!fv){fa[fu]fv; anse[i].w; t;if (tn-1){break;}}}if (tn-1) cout-1;//如果小于需要的代表不行输出-1. else coutans;//反之输出答案~ return 0;
}
如果有何不适请管理员大大斧正
感谢观看