問題 O 自來水管道

2021-07-13 22:17:57 字數 1924 閱讀 3178

前言必讀!

問題 o: 自來水管道

時間限制: 1 sec 記憶體限制: 128 mb

提交: 190 解決: 64

[提交][狀態][討論版]

題目描述

你領到了乙個鋪設校園內自來水管道的任務。校園內有若干需要供水的點,每兩個供水點可能存在多種鋪設路徑。對於每一種鋪設路徑,其成本是預知的。

任務要求最終鋪設的管道保證任意兩點可以直接或間接的聯通,同時總成本最低。

輸入每個測試用例由多行組成,第一行是兩個整數p和r,p代表供水點數(1<=p<=50),每個點都對應1到p中的乙個唯一編號。r代表可能的鋪設路徑數,路徑數可能有非常多。接下有r行,每行格式如下:

節點a編號 節點b編號 路徑成本

路徑成本不超過100。

測試用例之間有一空行分開。輸入結束用p=0表示,注意沒有r值。

輸出 每個測試用例占用一行輸出最低總成本。

樣例輸入

1 02 3

1 2 37

2 1 17

1 2 68

3 71 2 19

2 3 11

3 1 7

1 3 5

2 3 89

3 1 91

1 2 32

5 71 2 5

2 3 7

2 4 8

4 5 11

3 5 10

1 5 6

4 2 12

0樣例輸出017

1626

提示[提交][狀態][討論版]

純粹的prim水題,沒什麼好說的

給出prim偽**

1).輸入:乙個加權連通圖,其中頂點集合為v,邊集合為e;

2).初始化:vnew = ,其中x為集合v中的任一節點(起始點),enew = {},為空;

3).重複下列操作,直到vnew = v:

a.在集合e中選取權值最小的邊,其中u為集合vnew中的元素,而v不在vnew集合當中,並且v∈v(如果存在有多條滿足前述條件即具有相同權值的邊,則可任意選取其中之一);

b.將v加入集合vnew中,將邊加入集合enew中;

4).輸出:使用集合vnew和enew來描述所得到的最小生成樹。

c++:實現

#include

using

namespace

std;

#define inf -1

#define maxn 100

#define protect 2

int point[protect*maxn][protect*maxn]; //a->b 值為cost

int mine[protect*maxn]; //當前到點 i 最短路

bool visit[protect*maxn]; //prim 是否訪問過

bool judge[protect*maxn][protect*maxn]; //handle是否已經有邊

void print_mat(int n)

void handle(int v,int e)

if(judge[b][a]) point[b][a] = min(point[b][a],cost);

else

}//讀取並保證最小邊

}}int search(int now,int & cost,int n)

}visit[next]=true;mine[next]=0;

cost += min_next+1>0?min_next:0;

return next;

}//返回下乙個最小的鄰接點

int prim(int n)

int main(void)

}

自來水管道

思路 主要是普里姆演算法,搜尋找到頂點的最小權值,然後加到裡面。include include include include using namespace std int mini 51 int a 51 51 int vis 51 int main vis 1 1 int ans 0 for ...

常見自來水水表型別大全

常見自來水水表型別大全 微水平臺 2018 12 14 自1825年英國的克路斯發明平衡罐式水表以來,水表的發展已有近200年歷史。今天水務加就同你一起看看我們自來水都用到哪些型別的水表。水表發展簡史 從1825年英國的克路斯發明了真正具有儀表特徵的平衡罐式水表以來,水表的發展已有近二百年的歷史。中...

當自來水排程用上大資料分析

自來水公司工作人員正在排程中心檢視排程情況 今年入夏以來,武廣 慄雨等區域的供水不足情況得到了明顯改善。21日,在株洲市自來水公司供水排程中心,排程員張云指著排程中心大螢幕上的相關資料向記者介紹。過去,武廣 慄雨等新開發城區因處在管網末梢,經常會出現水壓不足。今年,市自來水公司的標準化排程運營庫建設...