acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • ああああああああああ

    ああああああああああ

    userId_undefined
    Fuck.you!!
    倔强青铜时空双修者
    17阅读
    1回复
    0点赞
  • 题解

    #include <bits/stdc++.h> using namespace std; long long n,m,k,fa[10020],c[15],vis[15],ans; struct edge{int u,v,w;}; edge g[1000010]; vector <edge> l; void init(){for(int i=1;i<=n+k;i++)fa[i]=i;} int _find(int x){return fa[x]x?x:fa[x]=_find(fa[x]);} void _union(int x,int y){ int fx=_find(x),fy=_find(y); if(fxfy) return ; fa[fx]=fy; } bool cmp(edge x,edge y){return x.w<y.w;} void tree(){ long long sum=0; for(int i=1;i<=k;i++){if(vis[i]){sum+=c[i];}} init(); for(int i=0;i<l.size();i++){ int u=l[i].u,v=l[i].v; if(u>n&&!vis[u-n]) continue; if(_find(u)_find(v)) continue; sum+=l[i].w; _union(u,v); } ans=min(ans,sum); return; } void dfs(int dep){ if(dep>k){ tree(); return; } dfs(dep+1); vis[dep]=1; dfs(dep+1); vis[dep]=0; return; } int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n>>m>>k; init(); for(int i=1;i<=m;i++){cin>>g[i].u>>g[i].v>>g[i].w;} sort(g+1,g+m+1,cmp); for(int i=1;i<=m;i++){ int u=g[i].u,v=g[i].v; if(_find(u)_find(v)) continue; _union(u,v); ans+=g[i].w; l.push_back(g[i]); } for(int j=1;j<=k;j++){ cin>>c[j]; for(int i=1;i<=n;i++){ int w; cin>>w; l.push_back({j+n,i,w}); } } sort(l.begin(),l.end(),cmp); dfs(1); cout<<ans; return 0; }

    userId_undefined
    上官凝萱
    时间刺客模拟·模拟练习生倔强青铜分支·分支解题者I/O·IO入门者
    3阅读
    0回复
    0点赞
  • 啊啊

    这题真难呀

    userId_undefined
    上官凝萱
    时间刺客模拟·模拟练习生倔强青铜分支·分支解题者I/O·IO入门者
    2阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页