国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Conscription(POJ NO.3723)解題報告(最大生成樹Kruskal算法)

2019-11-08 20:26:30
字體:
來源:轉載
供稿:網友

題目大意:征兵,需要征募女兵N人,男兵M人,每征募一人需要花10000刀(貴死了~),但是軍隊頭子老奸巨猾,他知道自己所征募的人中有些互相有不可描述的關系(只限男女別想多了),若是征募關系親密的人就可以少花一些錢。機智的頭子決定靠這個來減少開支。于是,現在給出若干男女之間的1~9999之間的親密度關系,征募某個人所需費用為10000-(已經征募的人中和自己的親密度的最大值)?,F在要求你通過適當的征募順序使得軍隊頭子征募人花錢最少(好好添油加醋了一番了各位笑笑作罷QWQ)。 限制條件:1<=N,M<=10000; 0<=R<=50000; 0

#include<cstdio>#include<algorithm>#define MAX_E 50000#define MAX_V 20000using namespace std;struct edge{int fm,to,cost;};edge es[MAX_E];int par[MAX_V];void init(int n){ for(int i=0;i<n;i++) par[i]=i;}int find(int x){ if(par[x]==x) return x; return par[x]=find(par[x]);}bool same(int x,int y){ return find(x)==find(y);}void unite(int x,int y){ x=find(x),y=find(y); par[y]=x;}bool cmp(const edge &e1,const edge &e2){ return e1.cost<e2.cost;}int n,m,r;int Kruskal(){ sort(es,es+r,cmp); init(n+m); int ans=0; for(int i=0;i<r;i++){ edge e=es[i]; if(!same(e.fm,e.to)){ unite(e.fm,e.to); ans+=e.cost; } } return ans;}int main(){ while(scanf("%d %d %d",&n,&m,&r)!=EOF){ int x,y,d; for(int i=0;i<r;i++){ scanf("%d %d %d",&x,&y,&d); es[i]=(edge){x,n+y,-d};//女士優先+_+,男的在并查集中排在女的后面; } 很典型的Kruskal算法與并查集的模板,對該算法有所疑問的可以移步我之前寫的博客 http://blog.csdn.net/QQ91239497/article/details/54935979 感謝各位看官,共同進步哦!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛扎县| 肥东县| 保定市| 商南县| 蓝山县| 离岛区| 建水县| 苍梧县| 陆川县| 元阳县| 嵊泗县| 信丰县| 布拖县| 紫云| 永春县| 萨迦县| 邵东县| 香河县| 泸西县| 保康县| 嘉祥县| 云和县| 漯河市| 西充县| 新郑市| 望奎县| 儋州市| 阜宁县| 南召县| 叙永县| 麻江县| 花垣县| 石河子市| 德江县| 合江县| 宁远县| 河源市| 犍为县| 墨脱县| 团风县| 洪雅县|