繼續(xù)暢通工程krusal-創(chuàng)新互聯(lián)

krusal 最小生成樹  最最最最簡單的!!繼續(xù)暢通工程krusal

但是我一開始總是忘了 把 r 的大小是n*(n-1)/2  WA了好多次?。?!

站在用戶的角度思考問題,與客戶深入溝通,找到云南網(wǎng)站設(shè)計(jì)與云南網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋云南地區(qū)。

還有記得先排序噢~

View Code
繼續(xù)暢通工程

Time Limit :2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) :9   Accepted Submission(s) : 2
Font: Times New Roman| Verdana | Georgia
Font Size: ← →
Problem Description
省政府“暢通工程”的目標(biāo)是使全省任何兩個(gè)村莊間都可以實(shí)現(xiàn)公路交通(但不一定有直接的公路相連,只要能間接通過公路可達(dá)即可)?,F(xiàn)得到城鎮(zhèn)道路統(tǒng)計(jì)表,表中列出了任意兩城鎮(zhèn)間修建道路的費(fèi)用,以及該道路是否已經(jīng)修通的狀態(tài)?,F(xiàn)請你編寫程序,計(jì)算出全省暢通需要的最低成本。
Input
測試輸入包含若干測試用例。每個(gè)測試用例的第1行給出村莊數(shù)目N (1< N < 100 );隨后的 N(N-1)/2 行對應(yīng)村莊間道路的成本及修建狀態(tài),每行給4個(gè)正整數(shù),分別是兩個(gè)村莊的編號(從1編號到N),此兩村莊間道路的成本,以及修建狀態(tài):1表示已建,0表示未建。

當(dāng)N為0時(shí)輸入結(jié)束。
Output
每個(gè)測試用例的輸出占一行,輸出全省暢通需要的最低成本。
Sample Input
31 2 1 01 3 2 02 3 4 031 2 1 01 3 2 02 3 4 131 2 1 01 3 2 12 3 4 10
Sample Output
310
View Code
#include <stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<cmath>

using std::sort;

int fa[105];
struct node
{
int a, b, c, d;
}r[10000];
int find(int t)
{
if(t == fa[t] )
return t;
else   return fa[t] = find(fa[t]);
}
bool merge(int i)
{
int fx = find(r[i].a);
int fy = find(r[i].b);
if( fx == fy )
return 0;
    fa[fx]= fy;
return 1;
}
int cmp(node a, node b)
{return a.c <= b.c ;  }
int main()
{    
int i, a, b, c, d, cnt, ans, n;
while(scanf("%d", &n), n)
    {
        ans= 0, cnt = 0;
for(i=1; i<=n; i++)
            fa[i]= i;
for(i=1; i<=n*(n-1)/2; i++)
        {
            scanf("%d %d %d %d", &a, &b, &c, &d);
            r[i].a= a, r[i].b = b, r[i].c = c, r[i].d = d;
if(d)
                merge(i);
        }
for(i=1; i<=n; i++)
if(fa[i] == i )
                cnt++;
        sort( r+1, r+1+n*(n-1)/2, cmp );
for(i=1; i<=n*(n-1)/2 && cnt > 1; i++)
if(r[i].d == 0)
            {
if(merge(i))
                    ans+= r[i].c, cnt--;
            }
        printf("%d
", ans);
    }

return 0;
}

本文標(biāo)題:繼續(xù)暢通工程krusal-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://muchs.cn/article28/dphjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、面包屑導(dǎo)航服務(wù)器托管、定制開發(fā)、網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)