poj3723Conscription kruskal模板水題

來源:互聯網
上載者:User

標籤:最大產生樹

//N個女孩,M個男孩,僱傭一個人的費用為10000 //男孩與女孩之間的關係為d,那麼如果僱傭了一個,僱傭另一個的費用為10000-d//每個人只能通過一種關係優惠//問最少需要花費多少僱傭這些人//很明顯的最大產生樹#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std ;const int maxn = 50010 ;struct node{    int u , v , w ;}edge[maxn];bool cmp(node a , node b){    return a.w > b.w ;}int F[maxn*2] ;int find(int x){    if(F[x] == -1)return x ;    return F[x] = find(F[x]) ;}int r ;int n , m ;int kruskal(){    int ans = 0 ;    for(int i = 1;i <= r;i++)    {        int fu = find(edge[i].u) ;        int fv = find(edge[i].v) ;        if(fu == fv)continue ;        ans += edge[i].w ;        F[fu] = fv ;    }  return ans ;}int main(){    //freopen("in.txt" , "r" , stdin) ;    int t ;    scanf("%d" , &t) ;    while(t--)    {        scanf("%d%d%d" , &n , &m , &r) ;        memset(F , -1 , sizeof(F)) ;        for(int i = 1;i <= r;i++)        {            scanf("%d%d%d" , &edge[i].u , &edge[i].v , &edge[i].w) ;            edge[i].v += maxn ;        }        sort(edge + 1 , edge + 1 + r , cmp) ;        int ans =  kruskal()  ;        cout<<(n+m)*10000 - ans<<endl;    }    return 0 ;}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

poj3723Conscription kruskal模板水題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.